淘淘摘苹果

题目
这里有两点需要考虑
力气够不够

够不够到

陶陶想知道在 s<0s<0 之前最多能摘到多少个苹果。
所以得知力气优先考虑

从小到大排序 然后一个一个选知道没有力气

AC code

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;

int n,s;
int a,b;
long long ans=0;
struct node{
    int xi;
    int yi;
}p[5010];
bool cmp(node x,node y){
    if(x.yi!=y.yi) return x.yi<y.yi;//首先按力气大小从小到大 
    else return x.xi<y.xi; 
}
int main()
{
    scanf("%d%d%d%d",&n,&s,&a,&b); 
    for(int i=1;i<=n;++i)
        scanf("%d %d",&p[i].xi,&p[i].yi);
    sort(p+1,p+1+n,cmp);
    for(int i=1;i<=n;++i){
        if(a+b>=p[i].xi && s-p[i].yi>=0){//够得到 也有力气 
            s-=p[i].yi;
            ++ans;
        }
    }
    cout<<ans;
    return 0;
}
posted @ 2021-01-29 19:49  归游  阅读(28)  评论(0编辑  收藏  举报