Cod sursa(job #3221353)

Utilizator bg16-2009bg16 bg16 bg16-2009 Data 6 aprilie 2024 20:31:14
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
// Made by https://github.com/bg16-2009

#include <algorithm>
#include <fstream>

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

int dp[10005];

int main() {
    int valori[5005], greutati[10005], n, g;
    fin >> n >> g;
    for (int i = 1; i <= n; i++) {
        fin >> greutati[i] >> valori[i];
    }
    for (int i = 1; i <= n; i++) {
        for (int j = g; j >= 1; j--) {
            if (j - greutati[i] > 0) {
                if (dp[j - greutati[i]] != 0) {
                    dp[j] = std::max(dp[j], dp[j - greutati[i]] + valori[i]);
                }
            }
        }
        if (dp[greutati[i]] == 0) {
            dp[greutati[i]] = valori[i];
        }
    }
    int maxi = -1;
    for (int i = 1; i <= g; i++) {
        maxi = std::max(maxi, dp[i]);
    }
    fout << maxi;
    return 0;
}