01背包WA 70分 不知道错在哪了
#include <bits/stdc++.h>
#define int long long
using namespace std;
int sum=-1;
int n,p,s,val[1000001],a[1000001],dp[1000001],ans=1e10+7,f[100000];
signed main(){
cin>>n>>p>>s;
for(int i=1;i<=n;i++){
scanf("%lld %lld",&a[i],&val[i]);
}
dp[0]=0;
for(int i=1;i<=n;i++){
for(int j=s;j>=a[i];j--){
if(dp[j-a[i]]+val[i]>=dp[j]){
f[j]=max(a[i],f[j-a[i]]);
}
dp[j]=max(dp[j],dp[j-a[i]]+val[i]);
}
}
for(int i=1;i<=s;i++){
if(dp[i]>=p)
ans=min(f[i],ans);
}
if(ans==1e10+7){
cout<<"No Solution!";
}else{
cout<<ans;
}
return 0;
}