Cod sursa(job #1020652)

Utilizator nytr0gennytr0gen nytr0gen Data 2 noiembrie 2013 14:07:41
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#define Gmax 10005
#define Nmax 5005

using namespace std;

inline int max(int a, int b) {
    if (a > b) {
        return a;
    }

    return b;
}

int main() {
    int i, cw, N, G, l;
    int D[2][Gmax], w[Nmax], p[Nmax];

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

    scanf("%d%d", &N, &G);
    for (i = 1; i <= N; ++i)
        scanf("%d%d", &w[i], &p[i]);

    for (i = 1, l = 0; i <= N; ++i, l = 1-l) {
        for (cw = 0; cw <= G; ++cw) {
            D[l][cw] = D[1-l][cw];

            if (cw >= w[i]) {
                D[l][cw] = max(D[l][cw], D[1-l][cw-w[i]] + p[i]);
            }
        }
    }

    printf("%d", D[1-l][G]);

    return 0;
}