Cod sursa(job #1892186)

Utilizator AndreiDumitrescuAndrei Dumitrescu AndreiDumitrescu Data 24 februarie 2017 19:52:11
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("rucsac.in");
ofstream t("rucsac.out");

int g[5001], p[5001], profit[10001];

int main()
{
    int n, i , j, k, maxim = 0;
    f >> n >> k;
    for(i = 1 ; i <= n ; i++)
    {
        f >> g[i] >> p[i];
    }
    for(i = 1 ; i <= k ; i++)
    {
        profit[i] = -1;
    }
    for(i = 1 ; i <= n ; i++)
    {
        for(j = k - g[i] ; j >= 0 ; j--)
        {
            if(profit[j] != -1 && profit[j] + p[i] > profit[j+g[i]])
                profit[j+g[i]] = profit[j] + p[i];
        }
    }
    for(i = 1 ; i <= k ; i++)
    {
        if(maxim < profit[i])
            maxim = profit[i];
    }
    t << maxim;
}