Cod sursa(job #2468965)

Utilizator Bogdan.1108Mandresi Bogdan Bogdan.1108 Data 6 octombrie 2019 12:41:05
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int l[1002], profit[5005], p[1001];

int main()
{
    int n, w, minn = 9999999, s = 0;
    fin >> n >> w;
    for (int i = 1; i <= n; i++)
    {
        fin >> l[i] >> p[i];
        s += l[i];
    }
    if (s < w)
        fout << "-1";
    else
    {
        int k;
        for (int j = 1; j <= w; j++)
            profit[j] = minn;
        for (int i = 1; i <= n; i++)
            for (int j = w-1; j >= 0; j--)
            {
                if (profit[j] != minn)
                {
                    if (j+l[i] >= w)
                        k = w;
                    else
                        k = j + l[i];
                    if (profit[j] + p[i] < profit[k])
                        profit[k] = profit[j] + p[i];
                }
            }
            fout << profit[w];
    }
    return 0;
}