贪心还拿到90分呢,dp0分
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int n,w,v[105],p[105];
int ans;
map<int,int> dp,tdp;
int main()
{
cin>>n>>w;
for(int i=1;i<=n;i++)
{
scanf("%d%d",v+i,p+i);
}
dp[0]=0;
for(int i=1;i<=n;i++)
{
tdp=dp;
/*也就是pair<int,int>的迭代器*/
for(map<int,int>::iterator it=dp.begin();it!=dp.end();it++)
if(it->first+v[i]<=w)
{
tdp[it->first+v[i]]=max(tdp[it->first+v[i]],tdp[it->first]+p[i]);
ans=max(ans,tdp[it->first+v[i]]);
}
dp=tdp;
}
cout<<ans;
return 0;
}