Cod sursa(job #3359713)

Utilizator VladPislaruPislaru Vlad Rares VladPislaru Data 2 iulie 2026 21:13:33
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

    int N, G;
    fin >> N >> G;

    // dp[cw] = profitul maxim obtinut cu greutate totala <= cw
    vector<int> dp(G + 1, 0);

    for (int i = 0; i < N; ++i) {
        int w, p;
        fin >> w >> p;
        // parcurgem capacitatile descrescator, ca dp[cw - w] sa fie
        // inca valoarea de la "linia" i-1 (fiecare obiect e luat cel mult o data)
        for (int cw = G; cw >= w; --cw)
            dp[cw] = max(dp[cw], dp[cw - w] + p);
    }

    fout << dp[G] << '\n';
    return 0;
}