Cod sursa(job #3355353)

Utilizator BogdanB761Bogdan-Mihai Beianu BogdanB761 Data 22 mai 2026 16:50:19
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

    int n, g;
    fin >> n >> g;

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

    for (int i = 1; i <= n; i++) {
        int iw, ip;
        fin >> iw >> ip;
        w[i] = iw;
        p[i] = ip;
    }

    vector<int> previous(g+1, 0);
    vector<int> current(g+1, 0);

    for (int i = 1; i <= g; i++) {
        current[i] = 0;
    }

    for (int j = 1; j <= n; j++) {
        previous = current;
        for (int i = 1; i <= g; i++) {
            if (i - w[j] >= 0) {
                current[i] = max(previous[i], previous[i - w[j]] + p[j]);
            } else {
                current[i] = previous[i];
            }
        }
    }

    fout << current[g];

    fin.close();
    fout.close();

    return 0;
}