题目描述
话说我们家小谭啊,他特别的好吃懒做,对于吃还很挑剔,有一天他得到了一堆的饮料,他就想要喝掉这些饮料,但是他喝饮料有个特殊的习惯,那就是不喜欢连续两次喝相同的饮料,小谭不知道是否存在一种喝饮料的顺序使得他能够喝完所有的饮料,所以他请你帮他写个程序来测一测。
输入
多组输入
每组第一行输入一个n ( 0 < n <= 10 ) 代表饮料的种类数量,接下来的一行有n个数,代表每种饮料的数量 p(p < 1e9 )
输出
如果存在一种喝饮料的顺序能够使小谭喝完所有的饮料就输出 yes 否则输出 no 。
样例输入 复制
3
4 1 1
5
5 4 3 2 1
样例输出 复制
no
yes
代码如下
#include<stdio.h>
#include<string.h>
#include<math.h>
long long a[11],max;
unsigned long long sum;
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
{
scanf("%lld",a+i);
}
max=a[0];
sum=0;
for(int i=0;i<n;i++)//将所有的数都加起来,找出最大值
{
sum+=a[i];
if(max<a[i])
max=a[i];
}
if(sum-max>=max-1)//如果其他的数不能和最大的那个数穿插起来,那就不行
printf("yes\n");
else
printf("no\n");
}
}