Cod sursa(job #1446525)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 2 iunie 2015 08:43:05
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int n, w;
long long int i, j, maxim;
int a[10001];

struct en
{
    int cant, cost;
}b[5001];

int main()
{
    f >> n >> w;
    for (i = 1; i <= n; i++)
        f >> b[i].cant >> b[i].cost;

    for (i = 1; i <= n; i++)
        for (j = w - b[i].cant; j >= 0; j--)
            if (a[j+b[i].cant] < a[j] + b[i].cost)
            {
                a[j+b[i].cant] = a[j] + b[i].cost;
                if (maxim < a[j+b[i].cant])
                    maxim = a[j+b[i].cant];
            }

    if (maxim <= 3000000000)
        g << maxim;
    else
        g << -1;
}