Cod sursa(job #1542696)

Utilizator edim98Eduard Constantinescu edim98 Data 5 decembrie 2015 16:24:55
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
///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;
}