Problem Description

HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。
 

 

Input
第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。
 

 

Output
对于每组数据,输出一行,包含一个"Yes"或者"No"。
 

 

Sample Input
2
3
4 1 1
5
5 4 3 2 1
 

 

Sample Output
No
Yes
 
分析:如果 所有数的和减去最大值 大于等于 最大值+1 ,就可以吃完。
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int t,n;
 5     long long sum;
 6     int i,j;
 7     int max;
 8     int a;
 9     scanf("%d",&t);
10     for (j=0;j<t;j++)
11     {
12         scanf("%d",&n);
13         max=0; sum=0;
14         for (i=0;i<n;i++)
15         {
16             scanf("%d",&a);
17             sum=sum+a;
18             if (a>max) max=a;
19         }
20         sum=sum-max;
21         if (max<=sum+1) 
22             printf("Yes\n");
23         else 
24             printf("No\n");
25     }
26     return 0;
27 }