Cod sursa(job #3355082)

Utilizator erikctnErik Catana erikctn Data 21 mai 2026 18:24:17
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

    int n, W;
    fin >> n >> W;

    vector<int> greutate(n), valoare(n);
    for (int i = 0; i < n; i++)
        fin >> greutate[i] >> valoare[i];

    vector<vector<int>> dp(n + 1, vector<int>(W + 1, 0));

    for (int i = 1; i <= n; i++) {
        for (int w = 0; w <= W; w++) {
            dp[i][w] = dp[i-1][w];
            if (greutate[i-1] <= w)
                dp[i][w] = max(dp[i][w], dp[i-1][w - greutate[i-1]] + valoare[i-1]);
        }
    }

    fout << dp[n][W] << endl;

    return 0;
}