Pagini recente » Cod sursa (job #467906) | Cod sursa (job #1545894) | Cod sursa (job #1314517) | Cod sursa (job #1147224) | Cod sursa (job #2191741)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream go("rucsac.out");
int N,G,g[5001],pret[5001],m[3][5001];
int main()
{
f>>N>>G;
for(int i=1;i<=N;i++) f>>g[i]>>pret[i];
for(int i=1;i<=N;i++)
for(int j=0;j<=G;j++)
{
if(i%2!=0)
{
m[1][j]=m[2][j];
if(g[i]<=j)
m[1][j]=max(m[1][j],pret[i]+m[2][j-g[i]]);
}
else
{
m[2][j]=m[1][j];
if(g[i]<=j)
m[2][j]=max(m[2][j],pret[i]+m[1][j-g[i]]);
}
}
if(N%2==0) go<<m[2][G];
else go<<m[1][G];
return 0;
}