https://www.luogu.org/problem/P1478
#include<bits/stdc++.h> using namespace std; int p[5010]; int n,s,a,b,cnt,ans; int main() { scanf("%d%d",&n,&s); //n为总的苹果数目 s为总的力气 scanf("%d%d",&a,&b); for(int i=1;i<=n;i++)//在读入的时候就把不可能摘到的苹果给去掉 { int u,m; scanf("%d%d",&u,&m); if(u>a+b) continue; cnt++; //cnt刚开始为0 +1后为1 p[cnt]=m; //m为所花费的力气 } sort(p+1,p+1+cnt); //数组p是从1开始输入的,所有p[0]不存在,要从1开始排序 for(int i=1;i<=cnt;i++)//按力气从小到大排序后优先选择消耗力气小的苹果 { s=s-p[i]; if(s>=0)ans++; else break; } printf("%d",ans); return 0; }