Cod sursa(job #2795353)

Utilizator domistnSatnoianu Dominic Ioan domistn Data 6 noiembrie 2021 11:41:41
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>

#define NMAX 5005
#define GMAX 10005

using namespace std;

struct elem {
    int g, c;
} a[NMAX];

int n, g, crt[GMAX], pr[GMAX];

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    scanf("%d%d", &n, &g);
    for(int i = 1; i <= n; ++i)
        scanf("%d%d", &a[i].g, &a[i].c);
    for(int gc = 1; gc <= g; ++gc)
        crt[gc] = (a[1].g <= gc) * a[1].c;
    for(int i = 2; i <= n; ++i) {
        memcpy(pr, crt, sizeof(crt));
        for(int gc = 1; gc <= g; ++gc)
            crt[gc] = max(pr[gc], pr[gc - a[i].g] + a[i].c);
    }
    printf("%d", crt[g]);
    return 0;
}