Cod sursa(job #3355348)

Utilizator BogdanB761Bogdan-Mihai Beianu BogdanB761 Data 22 mai 2026 16:25:44
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 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++) {
            current[i] = previous[i];
            if (i - w[j] >= 0) {
                current[i] = max(current[i], current[i - w[j]]);
            }
        }
    }

    fout << current[g];

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

    return 0;
}