结果
#include<bits/stdc++.h>
using namespace std;
int n,p,in1,in2,money,maxx,m,d[10005],dp[100];
char c;
bool b;
struct node{
int p1,p2,cha;
}a[10005];
int main(){
cin>>n>>p;
getchar();
for(int i=1;i<=n;i++){
cin>>in1;
if(getchar()!=' ')money+=in1;
else{
cin>>in2;
if(in2-in1<=p)money+=in1;
else m++,a[m].p1=in1,a[m].p2=in2,a[m].cha=in2-in1-p,money+=in1;
}
}
if(m==0){cout<<money;return 0;}
for(int i=1;i<=m;i++){
for(int j=p;j>=1;j--){
dp[i]=max(dp[j],dp[j-a[i].cha]+a[i].cha);
}
}
cout<<dp[m]+money;
return 0;
}