Pagini recente » Cod sursa (job #1084289) | Cod sursa (job #3244112) | Cod sursa (job #3251160) | Cod sursa (job #2745703) | Cod sursa (job #2536920)
#include <bits/stdc++.h>
#define DimMax 10005
#define Nmax 5005
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, gmax;
int vmax[DimMax];
bool uz[DimMax][Nmax];
int g[Nmax], v[Nmax];
int main()
{
fin>>n>>gmax;
for(int i = 1;i <= n;i++)
fin>>g[i]>>v[i];
for(int i = 1;i <= gmax;i++) vmax[i] = -1;
for(int s = 1;s <= gmax;s++)
for(int i = 1;i <= n;i++)
{
if(g[i] <= s && vmax[max(0, s - g[i])] != -1 && !uz[s - g[i]][i])
{
if(vmax[s - g[i]] + v[i] > vmax[s])
{
vmax[s] = vmax[s - g[i]] + v[i];
for(int k = 1;k <= n;k++)
uz[s][k] = uz[s - g[i]][k];
uz[s][i] = 1;
}
}
}
fout<<vmax[gmax];
return 0;
}