Cod sursa(job #3313632)

Utilizator catalinmarincatalinmarin catalinmarin Data 5 octombrie 2025 17:23:12
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int dp[2][10005];

// dp[(i % 2)[j] = care este costul maxim pe care il pot lua daca iau obiectul i sau nu
//dp[i % 2][j] = fie iau obiectul i, fie nu-l iau
// il iau: dp[i % 2][j] = dp[(i - 1) % 2][j - v[i].greutate] + v[i].cost
// nu il iau: dp[i % 2][j] = dp[(i - 1) % 2][j];

int main() {

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

    for (int i = 1; i <= n; i++) {

        int greutate, cost;

        fin >> greutate >> cost;

        for (int j = greutate; j <= g; j++) {

            int curr_i = i % 2;
            int last_i = (i - 1) % 2;

            dp[curr_i][j] = max(dp[last_i][j - greutate] + cost, dp[last_i][j]);
        }

    }

    fout << dp[n % 2][g];

    return 0;
}