Cod sursa(job #2612243)

Utilizator matthriscuMatt . matthriscu Data 8 mai 2020 17:51:01
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>
#define max(a, b) ((a > b) ? a : b)

int main() {
    int n, Wmax, P[5001], W[5001], i, w, dp[2][10001] {}, l = 0;
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    scanf("%d%d", &n, &Wmax);
    for(i = 1; i <= n; ++i)
        scanf("%d%d", &W[i], &P[i]);
    
    for(i = 1; i <= n; ++i, l = 1-l)
        for(w = W[i]; w <= Wmax; ++w)
            if(W[i] <= w)
                dp[1-l][w] = max(dp[l][w], dp[l][w-W[i]] + P[i]);
            else
                dp[1-l][w] = dp[l][w];

    printf("%d", dp[l][Wmax]);
}