Pagini recente » Cod sursa (job #2595186) | Cod sursa (job #429360) | Cod sursa (job #1595256) | Cod sursa (job #1090399) | Cod sursa (job #1542696)
///clasic cu cate un obiect diferit
#include <cstdio>
#define maxn 5001
#define maxg 10001
using namespace std;
FILE *fin = fopen("rucsac.in", "r");
FILE *fout = fopen("rucsac.out", "w");
int profit[maxg], p[maxn], g[maxn], n, k, maxim;
int main()
{
fscanf(fin, "%d%d", &n, &k);
for(int i = 1; i <= n; i++)
fscanf(fin, "%d%d", &g[i], &p[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]]+p[i] > profit[j])
profit[j] = profit[j-g[i]] + p[i];
for(int i = 1; i <= k; i++)
if(profit[i] > maxim)
maxim = profit[i];
fprintf(fout, "%d\n", maxim);
return 0;
}