对了第3,5个测试点。
我的想法是取有效高度的数据进num数组,再找最小力气计算。
#include<stdio.h>
int main(){
int n,s,a,b,j=1;
int count=0,x,y;
scanf("%d%d%d%d",&n,&s,&a,&b);
int num[5001][2]={0};
for(int i=1;i<=n;i++){
scanf("%d%d",&x,&y);
if(x<=(a+b)){
num[j][0]=x;
num[j][1]=y;
j++;
}
}
j--;
while(1){
int min=1;
for(int i=1;i<j;i++){
if(num[min][1]>num[i][1])
min=i;
}
if(s>=num[min][1]&&num[min][1]!=999){
s-=num[min][1];
count++;
num[min][1]=999;
}else break;
}
printf("%d",count);
return 0;
}