FREETALK的小游戏
总提交 : 174 测试通过 : 52
题目描述
Freetalk是科协的传统活动,每周五晚都会举办一次freetalk,让科协的成员们围在一起愉快的聊天,愉快的玩耍。Freetalk的主持者,往往都是办公室的同学。为了把freetalk办得新颖、生动、有趣,办公室的同学,尤其是顾主席,每次都要花费很多的心思来准备。这周的freetalk又要开始了,这次,顾主席想出了一个有趣的游戏。游戏的规则是这样的:在一张桌子上放上一个空的大杯子,和n个装满水的马克杯。所有的玩家依次轮流进行游戏,当到一个玩家来进行游戏时,这名玩家要选出一个装满水的马克杯,并将其中的水全部倒入大杯子中,如果大杯子里的水溢出了,那么我们就认为这名玩家输了。
顾主席觉得这个游戏挺不错的,不过他有一点顾虑,如果每轮游戏都会有人输,那么输的那个人肯定就会不开心了,这样可不太好,顾主席是不希望有人不开心的。因此,顾主席想找出是否有这样一种方式,使得除了顾主席以外的所有人都不会输。现在我们告诉你所有马克杯的容积和大杯子的容积。除此之外,你应该知道,除了顾主席以外还有(n-1)个人要玩这个游戏。请你判断一下,是否有这样一种可能,除了顾主席以外的(n-1)个人里面,没有人会输。
输入
第一行,包含两个整数n和s(2 <= n <= 100; 1 <= s <= 1000),分别表示马克杯的数目还有大杯子的容积,下一行包含n个整数,a1,a2,...,an(1 <= ai <= 10),数字ai表示第i个马克杯的体积。
输出
在单独的一行,打印“YES”(不包括引号),如果除了顾主席以外的(n-1)个人可能都不会输,否则,打印“NO”。
样例输入
3 4
1 1 1
样例输出
YES
提示
input
3 4
3 1 3
output
YES
input
3 4
4 4 4
output
NO
<span style="font-weight: normal;"><span style="font-size:12px;">#include<iostream> #include<algorithm> #include<stdlib.h> #include<stdio.h> using namespace std; int n,s,a[11]; int comp(const void *a,const void *b){ return *(int*)b-*(int*)a; } int main(){ int sum=0; scanf("%d%d",&n,&s); for(int i=0;i<n;i++){ scanf("%d",&a[i]); sum+=a[i]; } qsort(a,n,sizeof(int),comp); sum-=a[0]; if(sum<=s) printf("YES "); else printf("NO "); }</span></span>
版权声明:本文为博主原创文章,未经博主允许不得转载。