Cod sursa(job #3355514)

Utilizator susman_andreeasusman andreea susman_andreea Data 22 mai 2026 22:59:26
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#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;

    // varianta fara matrice bidimensionala

    // dp[w] = profitul maxim care poate fi obtinut folosind o
    // capacitate de exact sau cel mult w
    vector<int> dp(G + 1, 0);  // de la 0 la maximul G

    // iau fiecare obiect
    for (int i = 0; i < N; i++) {
        int W, P;
        fin >> W >> P;

        // parcurg invers greutatile, de la G la W, cea curenta adica
        // pt a folosi fiecare obiect o singura data
        for (int w = G; w >= W; w--) {
            if (dp[w] < dp[w - W] + P)  // daca iau obiectul curent sau nu
                dp[w] = dp[w - W] + P;
        }
    }

    fout << dp[G] << "\n";

    return 0;
}