60分求助
查看原帖
60分求助
324226
X2H_tato楼主2020/12/22 20:01
#include <iostream>
#include <algorithm>
using namespace std;
int n,s;
int m,b;
struct make{
    int x,y;
}a[5005];

int cmp (make i,make j)
{
    if(i.y!=j.y) return i.y<j.y;//需花的力气小的放在前面
    return i.x<j.x;//如果力气花的一样就看谁更矮
}

int main()
{
    cin>>n>>s>>m>>b;
    for(int i=1;i<=n;i++)
        cin>>a[i].x>>a[i].y;
    sort(a+1,a+n+1,cmp);//排序
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        if(m+b>a[i].x&&s-a[i].y>=0)//他够得着并且力气不会花完
        {
            s-=a[i].y;//把要的力气减了
            ans++;//答案+1
        }
    }
    cout <<ans<<" "<< endl;
    return 0;
}

2020/12/22 20:01
加载中...