Cod sursa(job #2740045)

Utilizator raduqRadu Minea raduq Data 11 aprilie 2021 00:14:56
Problema Problema rucsacului Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <stdio.h>

#define NMAX 5001
#define WMAX 10001

using namespace std;

int N, W;
int dp[NMAX][WMAX];

int price, weight;

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

    cin >> N >> W;  

    // General cases
    for (int i = 1; i <= N; ++i) {
        cin >> weight >> price;

        for (int j = 1; j <= W; j++) {
            // Setting point of reference
            dp[i][j] = dp[i - 1][j];

            for (int k = 1; k < j; k++) {
                if (k + weight <= j && dp[i - 1][k] + price > dp[i][j]) {
                    dp[i][j] = dp[i - 1][k] + price;
                }
            }
        }
    }

    // Write result
    cout << dp[N][W];

    // DEBUGGING
    // for (int i = 0; i <= N; i++) {
    //     for (int j = 0; j <= W; j++) {
    //         cout << dp[i][j] << '\t';
    //     }
    //     cout << '\n';
    // }

    return 0;
}