Pagini recente » Cod sursa (job #1825915) | Cod sursa (job #866221) | Cod sursa (job #1018965) | Cod sursa (job #3274818) | Cod sursa (job #2390818)
//#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
#define kg first
#define ar second
vector < pair<int,int> > t;
vector <int> x;
int i,j,kg,n,g,maxi;
int main()
{
cin>>n>>g;
t.resize(n+1);
for(i=1;i<=n;++i)
cin>>t[i].kg>>t[i].ar;
x.resize(g+1);
x[t[1].kg]=t[1].ar;
for(i=2;i<=n;++i)
{
kg=t[i].kg;
for(j=g;j>=1;--j)
{
if(j+kg<=g)
{
if(x[j]!=0)
{
if(x[j+kg]<x[j]+t[i].ar) x[j+kg]=x[j]+t[i].ar;
if(j==kg&&x[j]<t[i].ar) x[j]=t[i].ar;
}
else if(j==kg) x[j]=t[i].ar;
}
}
}
maxi=0;
for(i=1;i<=g;++i)
if(x[i]>maxi) maxi=x[i];
cout<<maxi;
return 0;
}