Cod sursa(job #2771634)

Utilizator andrei_C1Andrei Chertes andrei_C1 Data 28 august 2021 13:13:52
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int N, G;
vector<pair<int, int>>v;
vector<vector<int>>dp;
int main() {
    fin >> N >> G;
    v = vector<pair<int, int>>(N + 1);
    dp = vector<vector<int>>(2, vector<int>(G + 1));
    for(int i = 1; i <= N; i++) {
        fin >> v[i].first >> v[i].second;
    }
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= G; j++) {
            if(v[i].first <= j) {
                dp[1][j] = max(dp[0][j], dp[0][j - v[i].first] + v[i].second);
            } else {
                dp[1][j] = dp[0][j];
            }
        }
        dp[0] = dp[1];
    }
    fout << dp[1][G] << '\n';
    return 0;
}