Cod sursa(job #2070414)

Utilizator amaliarebAmalia Rebegea amaliareb Data 19 noiembrie 2017 15:37:03
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <iostream>

using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
const int MaxN = 5005, MaxG = 10005;
int n, gr[MaxN], cost[MaxN], d[MaxG], G;

int main()
{
    f >> n >> G;
    for (int i = 1; i <= n; i++)
    {
        f >> gr[i] >> cost[i];
    }
    int maxi = 0;
    d[0] = 1;
    for (int i = 1; i <= n; i++)
        for (int j = maxi; j >= 0; j--) if(d[j] && j + gr[i] <= G)
        {
            d[j + gr[i]] = max(d[j + gr[i]], d[j] + cost[i]);
            maxi = max(maxi, j + gr[i]);
        }
    maxi = 0;
    for (int i = 0; i <= G; i++) maxi = max(maxi, d[i]);
    g << maxi - 1 << '\n';
    return 0;
}