Cod sursa(job #3160684)

Utilizator robertapopescuPopescu Roberta Andreea robertapopescu Data 24 octombrie 2023 20:53:54
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

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

int main() 
{
    int n, gmax;
    // n - numar obiecte; gmax - capacitatea maxima a rucsacului
    cin >> n >> gmax;

    int weights[n];
    // stocarea greutatilor
    int values[n];
    // valoarea, profitul obiectelor

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

    int dp[gmax + 1];
    for (int i = 0; i <= gmax; i++) 
    {
        dp[i] = 0;
    }

    for (int i = 0; i < n; i++) 
    {
        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;
}