Cod sursa(job #3284366)

Utilizator _andr31Rusanescu Andrei-Marian _andr31 Data 11 martie 2025 15:22:50
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");
    int n, W;
    fin >> n >> W;
    vector<vector<int>> dp(2, vector<int>(W + 1));
    vector<pair<int, int>> objects(n);
    for (int i = 0; i < n; ++i) {
        fin >> objects[i].first >> objects[i].second;
    }
    for (int i = 1; i <= n; ++i) {
        for (int w = 1; w <= W; ++w) {
            if (w - objects[i - 1].first >= 0) {
                dp[1][w] = max(dp[0][w], dp[0][w - objects[i-1].first] + objects[i-1].second);
            } else {
                dp[1][w] = dp[0][w];
            }
        }
        swap(dp[0], dp[1]);
    }
    fout << dp[0][W];
    return 0;
}