Cod sursa(job #3160683)

Utilizator robertapopescuPopescu Roberta Andreea robertapopescu Data 24 octombrie 2023 20:50:29
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream cin("rucsac.in");
ofstream cout("rucsac.out");

int n, gmax;
// n - numar obiecte; gmax - capacitatea maxima a rucsacului
int weights[n];
// stocarea greutatilor
int values[n];
// valoarea, profitul obiectelor

int dp[gmax + 1];

int main() {
    cin >> n >> gmax;

    for (int i = 0; i < n; i++)
    {
        cin >> weights[i] >> values[i];
    }

    for (int i = 0; i < n; i++)
    {
        // parcurgere fiecare obiect
        for (int j = gmax; j >= weights[i]; j--)
        {
            // deplasare de la gmax la weight, actualizeaza dp
            // pentru fiecare greutate valida
            dp[j] = max(dp[j], dp[j - weights[i]] + values[i]);
            // determinarea profitului maxim intre a
            // lua primul obiect (dp[j]) si cel de-al doilea
        }
    }

    cout << dp[gmax] << endl;

    return 0;
}