代码第10行,别人都是按 ai+bi 降序来,就我升序,还对了……
#include <bits/stdc++.h>
using namespace std;
int r,n,x,y,cnt,dp[60001],ans;
struct node
{
int a,b;
}c[101],wx[101];
int k1,k2;
bool cmp1(node p,node q){return p.a<q.a;}
bool cmp2(node p,node q){return p.a+p.b<q.a+q.b;}
int main()
{
scanf("%d%d",&n,&r);
for(int i=1;i<=n;++i)
{
scanf("%d%d",&x,&y);
if(y>=0)c[++k1].a=x,c[k1].b=y;
else wx[++k2].a=x,wx[k2].b=y;
}
sort(c+1,c+k1+1,cmp1);
for(int i=1;i<=k1;++i)
{
if(r>=c[i].a)r+=c[i].b,++cnt;
else break;
}
sort(wx+1,wx+k2+1,cmp2);
for(int i=1;i<=k2;++i)
{
for(int j=r;j>=wx[i].a;--j)
{
if(j+wx[i].b>=0)dp[j]=max(dp[j],dp[j+wx[i].b]+1);
}
}
printf("%d",dp[r]+cnt);
return 0;
}