FREETALK的小游戏

题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2046

FREETALK的小游戏

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:158            测试通过:42

描述

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

代码:

#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=111;

int a[MAXN];

int main()
{
    int n,s;
    while(scanf("%d%d",&n,&s)==2)
    {
        for(int i=0;i<n;++i)
            scanf("%d",&a[i]);

        sort(a,a+n);

        int sum=0;
        for(int i=0;i<n-1;++i)
            sum+=a[i];

        if(sum+a[n-1]<=s||sum<=s&&sum+a[n-1]>s)
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
    }
    return 0;
}


你可能感兴趣的:(FREETALK的小游戏)