Cod sursa(job #1542519)

Utilizator edim98Eduard Constantinescu edim98 Data 5 decembrie 2015 14:11:47
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
///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;
}