D1-小Z的合影

小Z的合影

Thing Level:★★☆☆☆

Description:

上海迪士尼今年终于开园,小z在开园的第一天就来玩了,也有很多小朋友来玩,小朋友们最喜欢和气球合影了。小z恰好有一些气球,这样小朋友就可以和小z合影了,小z也最喜欢和小朋友合影了。但是每个小朋友都很傲娇,对气球的数量都有要求,如果小z的气球少于这个数量小朋友是不会和小z合影的。同时每个小朋友都有一些棒棒糖,在合影之后就会把棒棒糖给小z。为了能让更多的小朋友和小z合影,小z可以去买更多的气球。恰好小p在迪士尼里卖气球,小z每花费一个花费糖可以从小p那里买到一个气球。

现在,请帮助小z和更多的小朋友合影。

输入描述

输入包含多组数据。

每组数据的第一行有两个整数n和k,1<=n<10000,1<=k<10000,表示有n个小朋友,小z手里有k个气球。

下面有n行,每行两个整数ai和bi,1<=ai,bi<100000000,表示第i的小朋友有ai个棒棒糖,希望与至少bi个气球合影。

输出描述

对每一组输入数据,输出一行,小z最多能和多少小朋友合影。
样例输入:
2 1
1 5
4 1
2 2
5 6
3 1
样例输出:
2
1

Code:

#include <bits/stdc++.h>
#define MAXN 10010
struct Node
{
    long long candy;
    long long ballon;
}node[MAXN];
using namespace std;
bool cmp(const Node& x, const Node& y)
{
    return x.ballon < y.ballon;
}
int main(void)
{
    int n;
    long long k;

    while (scanf("%d%lld", &n, &k)!=EOF)  //多组输入
    {
        int ans = 0;
        for (int i = 0; i < n; i++)scanf("%lld%lld", &node[i].candy, &node[i].ballon);
        sort(node, node + n, cmp);
        while (ans < n&&node[ans].ballon<=k)k += node[ans++].candy;
        printf("%lld\n", ans);
    }

    return 0;
}

The Key:

  1. 题目为多组输入;
  2. 题目并没有说小朋友是按顺序来的,就当做小Z去找小朋友咯;
  3. 既然如3所示,那么小朋友的傲娇度就要排下序啦;
  4. 一颗糖果换一个气球,那就直接合完影后加上糖果数就可以咯;

The Change:

  • sort(,,cmp)用法;

人生断无易处之境遇,人间哪来空闲之光阴
—— 曾国藩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值