本地样例跑出来 9 应该输出 10
#include <bits/stdc++.h>
using namespace std;
int n,ans,dp[1005][114514];
struct zhuan{
int w,v;
}kuai[1005];
bool cmp(zhuan a,zhuan b)
{
return a.w+a.v<b.w+b.v;
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++) cin >> kuai[i].w >> kuai[i].v;
sort(kuai+1,kuai+n+1,cmp);
for(int i=1;i<=n;i++)
for(int j=kuai[i].w+kuai[i].v;j>=kuai[i].w;j--)
dp[i][j]=max(dp[i][j],dp[i-1][j-kuai[i].w]+kuai[i].v),ans=max(ans,dp[i][j]);
cout << ans;
return 0;
}