Cod sursa(job #2833003)

Utilizator Maria-BorcaBorca Maria Maria-Borca Data 14 ianuarie 2022 16:39:06
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
#include <stdlib.h>

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

#define MAXN 5010
#define MAXG 10010

int d[MAXN][MAXG];
int w[MAXN], p[MAXN];

int main() {
    int n, g;
    cin >> n >> g;
    for (int i = 1; i <= n; i ++)
        cin >> w[i] >> p[i];
    for (int i = 1; i <= n; i ++) {
        if (i == 1)
            d[i][w[i]] = p[i];
        else {
            for (int cw = 1; cw <= g; cw ++) {
                d[i][cw] = d[i - 1][cw];
                if (w[i] <= cw) {
                    d[i][cw] = max(d[i - 1][cw], d[i - 1][cw - w[i]] + p[i]);
                }
            }
        }
    }

    int Pmax = d[n][g];
    fout << Pmax;

    return 0;
}