Cod sursa(job #2761568)

Utilizator MoarcascosminMoarcas Cosmin Moarcascosmin Data 2 iulie 2021 18:34:58
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, g, profit[5001], greutate[5001], P[5001][10001];

void Citire()
{
    ifstream f("rucsac.in");

    f >> n >> g;

    for(int i = 1; i <= n; i++)
        f >> greutate[i] >> profit[i];
}

void FormareDP()
{
    for(int obiect = 1; obiect <= n; obiect++)
        for(int G_rucsac = 1; G_rucsac <= g; G_rucsac++)
        {
            if(greutate[obiect] > G_rucsac)
                P[obiect][G_rucsac] = P[obiect - 1][G_rucsac];
            else
                P[obiect][G_rucsac] = max(profit[obiect] + P[obiect - 1][G_rucsac - greutate[obiect]], P[obiect - 1][G_rucsac]);
        }
}

void Afisare()
{
    ofstream gg("rucsac.out");
    gg << P[n][g];
}

int main()
{
    Citire();
    FormareDP();
    Afisare();

    return 0;
}