奇怪的歌手Pancake

一道因缺斯汀的题目

先来看看题目

Description

歌手The Pancakes到幼儿园跟小朋友玩耍,她到达的时候小朋友们已经争着积木玩了。小朋友都想要更多的积木砌一个自己喜欢的图形,砌完就可以和The Pancakes合照。同时,The Pancakes手上还有一些积木,她可以把手上的这些积木全部给一个小朋友,然后等该小朋友砌完后就可以收回所发的积木和该小朋友原先手上的积木。但她不知道能否让所有的小朋友都和她合照,聪明的你可以帮助她吗?

Input

输入包含多个数据。
每个数据的第一行是两个正整数n和s,1≤n≤10000,1≤s≤1000000,表示一共有n位小朋友,The Pancakes手上有s块积木。以下有n行,每行有两个正整数,a和b,1≤a,b≤10^9,表示第i个小朋友手上有a块积木,还需要b块积木才能够砌完。
输入n=0时表示结束。

Output

如果可以让所有小朋友都和Pancake合照,就输出YES;否则,输出NO。

Sample Input

2 2
1 4
2 1
2 2
1 4
1 1
0 0

Sample Output

YES
NO

Problem Source

ZSUACM Team Member

(为了出道题,TA们也是为了剧情操碎了心~)

下面是我的代码

#include<stdio.h>
#include<string.h>
int main() {
    int k, n, phave, boyhave, need1, i, j, temp, rest, yn;
    int have[1000], need[1000];

    //输入数据 
    for (scanf("%d %d", &n, &phave); n != 0; scanf("%d %d", &n, &phave)) {
    for (k = 0; k < n; k++) {
        scanf("%d %d", &boyhave, &need1);
        have[k] = boyhave;
        need[k] = need1;
    } 
    //冒泡,小的在前 
    for (j = 0; j < n - 1; j++) {
        for (i = 0; i < n - 1; i++) {
            if (need[i] > need[i + 1]) {
               temp = need[i];
               need[i] = need[i + 1];
               need[i + 1] = temp;
               temp = have[i];
               have[i] = have[i + 1];
               have[i + 1] = temp;
} } }  
//开始分积木
    rest = n;
    for (k = 0; k < n; k++) {
        if (phave >= need[k]) {
            rest--;
            phave = phave + have[k];
} } if (0 == rest)
    printf("YES\n");
    else
    printf("NO\n");
} return 0;
}

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值