codeforces 892A - Greed - [超級大水題][O(n)數組最大和次大]
題目鏈接:https://cn.vjudge.net/problem/CodeForces-892A
Jafar has n cans of cola. Each can is described by two integers: remaining volume of cola ai and can‘s capacity bi (ai ?≤? bi).
Jafar has decided to pour all remaining cola into just 2 cans, determine if he can do this or not!
Input
The first line of the input contains one integer n
The second line contains n space-separated integers a1,?a2,?...,?an (0?≤?ai?≤?109) — volume of remaining cola in cans.
The third line contains n space-separated integers that b1,?b2,?...,?bn (ai?≤?bi?≤?109) — capacities of the cans.
Output
Print "YES" (without quotes) if it is possible to pour all remaining cola in 2 cans. Otherwise print "NO" (without quotes).
You can print each letter in any case (upper or lower).
Example
Input2Output
3 5
3 6
YESInput
3Output
6 8 9
6 10 12
NOInput
5Output
0 0 5 0 0
1 1 8 10 5
YESInput
4Output
4 1 0 3
5 2 2 3
YES
賊JR的水,根本不需要題解……
只是想貼一個記錄一下O(n)得到數組內最大和次大的for循環代碼,免得以後什麽時候腦抽忘記了下不出來僵掉了……
#include<bits/stdc++.h> usingnamespace std; typedef long long LL; int n; int main() { scanf("%d",&n); LL sum=0; for(int i=1,tmp;i<=n;i++) { scanf("%d",&tmp); sum+=tmp; } LL max1=-1,max2=-2; for(int i=1,tmp;i<=n;i++) { scanf("%d",&tmp); if(max2<=max1 && max1<=tmp) max2=max1,max1=tmp; else if(max2<tmp && tmp<=max1) max2=tmp; } if(max1+max2 >= sum) cout<<"YES"<<endl; else cout<<"NO"<<endl; }
codeforces 892A - Greed - [超級大水題][O(n)數組最大和次大]