Cod sursa(job #1427661)

Utilizator alex.bullzAlexandru Lilian alex.bullz Data 2 mai 2015 19:26:55
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <cstring>

int max (int a, int b) { return a > b ? a : b; }

int main() {
    freopen ("rucsac.in", "r", stdin);
    freopen ("rucsac.out", "w", stdout);

    int n, f, s, w;

    scanf ("%d%d", &n, &w);

    int d[n+1][w+1], c[n+1], g[n+1];

    memset (c, 0, (n + 1) * sizeof (int));
    memset (g, 0, (n + 1) * sizeof (int));
    memset (d, 0, (n + 1) * (w + 1) * sizeof (int));

    for (int i = 1; i <= n; ++i) {
        scanf ("%d%d", &f, &s);
        c[i] = s;
        g[i] = f;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= w; ++j) {
            d[i][j] = max (d[i-1][j], d[i-1][j-g[i]] + c[i]);
        }
    }

    printf ("%d\n", d[n][w]);

    return 0;
}