Pagini recente » Cod sursa (job #472969) | Cod sursa (job #1738141) | Cod sursa (job #898068) | Cod sursa (job #430076) | Cod sursa (job #2471391)
#include<bits/stdc++.h>
#define maxn 5003
#define maxg 10003
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int greutate[maxn], profit[maxn];
int optim[maxg];
int N,G;
void read()
{
in>>N>>G;
for(int i=0; i<N; i++)
in>>greutate[i]>>profit[i];
}
int dp()
{
for(int j=1; j<=G; j++)
optim[j] = -1;
int sol = 0;
for(int i=0; i<N; i++)
{
for(int j=G-greutate[i]; j>=0; j--)
if(optim[j]!=-1 && optim[j]+profit[i]>optim[j+greutate[i]])
{
optim[j+greutate[i]]=optim[j]+profit[i];
sol=max(sol,optim[j+greutate[i]]);
}
}
return sol;
}
int main()
{
read();
out<<dp()<<endl;
return 0;
}