好吧!我实在想不出我到底错在了哪里!不过看了别人的代码感觉自己的代码好low这个题的思路就是把所有可乐的量加起来,然后把最大的两个可乐罐的容量全部加起来。之后比较他们两个的大小。这里注意只用int已经不能满足题目要求,需要用到long long。还有就是自己学到了sort的排序。这个比冒泡排序好用多了。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[100001];
long long b[100002];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%lld",&b[i]);
long long sum=0;
for(i=0;i<n;i++)
{
sum=sum+a[i];
}
sort(b,b+n);
if(b[n-1]+b[n-2]>=sum)
printf("YES\n");
else
printf("NO\n");
return 0;
}
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!
The first line of the input contains one integer n (2 ≤ n ≤ 100 000) — number of cola cans.
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.
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).
2 3 5 3 6
YES
3 6 8 9 6 10 12
NO
5 0 0 5 0 0 1 1 8 10 5
YES
4 4 1 0 3 5 2 2 3
YES