Pagini recente » Cod sursa (job #1956724) | Cod sursa (job #2815) | Cod sursa (job #1357196) | Cod sursa (job #1527339) | Cod sursa (job #1542519)
///clasic cu cate un obiect diferit
#include <cstdio>
using namespace std;
FILE *fin = fopen("rucsac.in", "r");
FILE *fout = fopen("rucsac.out", "w");
int profit[10005], g[10005], n, k, maxim;
int main()
{
fscanf(fin, "%d%d", &n, &g);
for(int i = 1; i <= n; i++)
fscanf(fin, "%d%d", &profit[i], &g[i]);
for(int j = 1; j <= k; j++)
profit[j] = -1;
profit[0] = 0;
for(int i = 1; i <= n; i++)
for(int j = k; j >= g[i]; j--)
if(profit[j-g[i]] != -1 && profit[j-g[i]]+profit[i] > profit[j])
profit[j] = profit[j-g[i]] + profit[i];
for(int i = 1; i <= k; i++)
if(profit[i] > maxim)
maxim = profit[i];
fprintf(fout, "%d\n", maxim);
return 0;
}