题目来源:https://www.luogu.org/problemnew/show/P1478
直接使用暴力求解即可。
Talk is cheap,show me the code
void cin(int a[][2],int n)
{
int i;
for(i=0;i<n;i++)
scanf("%d%d",&a[i][0],&a[i][1]);
}
void sort_min(int a[][2],int n)
{
int i,j,t,l;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j][1]>a[j+1][1])
for(l=0;l<2;l++)t=a[j][l],a[j][l]=a[j+1][l],a[j+1][l]=t;
}
int main()
{
int n,s,heigh;
int a,b;
int ap[50000][2];
int count=0,i=0;
scanf("%d%d",&n,&s);
scanf("%d%d",&a,&b);
cin(ap,n);
sort_min(ap,n);
heigh=a+b;
while(s>0&&i<n)
{
if(ap[i][0]<=heigh)
{
s-=ap[i][1],count++;
}
if(s<0)s+=ap[i][1],count--;
i++;
}
printf("%d",count);
return 0;
}