Cod sursa(job #1993725)

Utilizator StefanManolacheManolache Stefan StefanManolache Data 23 iunie 2017 17:25:19
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <cstdio>
#include <algorithm>
#define MAXN 5000
#define MAXG 10000
FILE *fin=fopen("rucsac.in","r");
FILE *fout=fopen("rucsac.out","w");
int g[MAXN+2], p[MAXN+2];
int d[2][MAXG];

int main() {
    int n, gr, rez, l = 0;
    scanf("%d%d", &n, &gr);

    for (int i = 1; i <= n; i++)
        scanf("%d%d", &g[i], &p[i]);

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= gr; j++)
        {
            d[1-l][j] = d[l][j];
            if (g[i] <= j)
                d[1-l][j] = std::max( d[1-l][j], d[l][j - g[i]] + p[i] );
        }
        l = 1 - l;
    }
    rez = d[l][gr];
    printf("%d", rez);
    return 0;
}