Cod sursa(job #3354300)

Utilizator elisa_elena.arghirArghir Elisa elisa_elena.arghir Data 17 mai 2026 13:24:40
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream>
#include<vector>
#include<fstream>

using namespace std;

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

    int N, G, i, j;
    in >> N >> G;

    //dp[i][j] = profitul maxim care se poate obtine pentru un rucsac
    //cu i obiecte si greutate j
    vector<vector<int>> dp(N + 1, vector<int> (G + 1, 0));

    vector<int> w(N + 1);
    vector<int> p(N + 1);

    for (i = 1; i <= N; i++)
        in >> w[i] >> p[i];

    for (j = 0; j <= G; j++)
        dp[0][j] = 0; //nu am obiecte, nu pot obtine niciun profit 
    
    for (i = 1; i <= N; i++)
        for (j = 0; j <= G; j++)
            if (j - w[i] >= 0)
                dp[i][j] = max (dp[i - 1][j], dp[i - 1][j - w[i]] + p[i]);
            else
                dp[i][j] = dp[i - 1][j];

    out << dp[N][G];
}