Cod sursa(job #3161331)

Utilizator octavian202Caracioni Octavian Luca octavian202 Data 26 octombrie 2023 17:38:57
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

const int NMAX = 5005;

int dp[NMAX][2*NMAX], w[NMAX], p[NMAX];

int main() {

    int n, g;
    fin >> n >> g;
    for (int i = 1; i <= n; i++) {
        fin >> w[i] >> p[i];
    }

    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= g; j++) {
            if (i == 0 || j == 0) {
                dp[i][j] = 0;
                continue;
            }

            if (w[i] > j) {
                dp[i][j] = dp[i - 1][j];
                continue;
            }

            dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + p[i]);
        }
    }

    fout << dp[n][g];



    return 0;
}