题解:
此题需要先排序在进行计算
#include<stdio.h>
void swap(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
void swap(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
//void sort(int a[],int s,int e,int b[]){
// if(s>=e){
// return;
// }
// int k=a[s];
// int i=s,j=e;
// while(i!=j){
// while(j>i&&a[j]>=k)
// --j;
// swap(&a[i],&a[j]);
// swap(&b[i],&b[j]);
// while(i<j&&a[i]<=k)
// ++i;
// swap(&a[i],&a[j]);
// swap(&b[i],&b[j]);
// }
// sort(a,s,i-1,b);
// sort(a,i+1,e,b);
//}
// if(s>=e){
// return;
// }
// int k=a[s];
// int i=s,j=e;
// while(i!=j){
// while(j>i&&a[j]>=k)
// --j;
// swap(&a[i],&a[j]);
// swap(&b[i],&b[j]);
// while(i<j&&a[i]<=k)
// ++i;
// swap(&a[i],&a[j]);
// swap(&b[i],&b[j]);
// }
// sort(a,s,i-1,b);
// sort(a,i+1,e,b);
//}
int main()
{
int n,s;
scanf("%d %d",&n,&s);
int a,b;
scanf("%d %d",&a,&b);
int x[n],y[n],i;
for(i=0;i<n;i++){
scanf("%d %d",&x[i],&y[i]);
}
// sort(y,0,n-1,x);
int j;
for(i=1;i<n;i++){
for(j=n-1;j>=i;j--){
if(y[j]<y[j-1]){
swap(&y[j],&y[j-1]);
swap(&x[j],&x[j-1]);
}
}
}
// {
// printf("************\n");
// for(i=0;i<n;i++){
// printf("%d %d\n",x[i],y[i]);
// }
// }
int ret=0;
a+=b;
for(i=0;i<n;i++){
if(a>=x[i]){
s-=y[i];
if(s<0){
break;
}
ret++;
}
}
printf("%d",ret);
return 0;
}
{
int n,s;
scanf("%d %d",&n,&s);
int a,b;
scanf("%d %d",&a,&b);
int x[n],y[n],i;
for(i=0;i<n;i++){
scanf("%d %d",&x[i],&y[i]);
}
// sort(y,0,n-1,x);
int j;
for(i=1;i<n;i++){
for(j=n-1;j>=i;j--){
if(y[j]<y[j-1]){
swap(&y[j],&y[j-1]);
swap(&x[j],&x[j-1]);
}
}
}
// {
// printf("************\n");
// for(i=0;i<n;i++){
// printf("%d %d\n",x[i],y[i]);
// }
// }
int ret=0;
a+=b;
for(i=0;i<n;i++){
if(a>=x[i]){
s-=y[i];
if(s<0){
break;
}
ret++;
}
}
printf("%d",ret);
return 0;
}