Cod sursa(job #2468962)

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

using namespace std;

int l[1000], profit[5000], p[1000];

int main()
{
    int n, w, minn = 9999999, s = 0;
    cin >> n >> w;
    for (int i = 1; i <= n; i++)
    {
        cin >> l[i] >> p[i];
        s += l[i];
    }
    if (s < w)
        cout << "-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];
                }
            }
            cout << profit[w];
    }
    return 0;
}