Cod sursa(job #2799408)

Utilizator TarceaIonutTarcea Tudor Ionut TarceaIonut Data 13 noiembrie 2021 10:13:46
Problema Problema rucsacului Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

struct obiect{int greutate, profit;};
vector<vector<int>> dp;
vector<obiect> obiecte;

int main(){
    int n, gmax, index = 0;
    fin >> n >> gmax;
    dp = vector<vector<int>>(2, vector<int>(gmax+5005));
    obiecte = vector<obiect>(n);
    for (int i = 0; i < n; i++, index = 1 - index){
        fin >> obiecte[i].greutate >> obiecte[i].profit;
        for (int g = 0; g < gmax; g++){
            dp[1-index][g] = max(dp[1-index][g], dp[index][g]);
            if (g + obiecte[i].greutate <= gmax)
                dp[1-index][g + obiecte[i].greutate] = max(dp[1-index][g + obiecte[i].greutate], dp[index][g]+obiecte[i].profit);
        }
    }
    int ans = -1;
    for (int g = 0; g <= gmax; g++){
        ans = max(ans, dp[index][g]);
    }
    fout << ans;
    return 0;
}