Cod sursa(job #2428444)

Utilizator PetrescuAlexandru Petrescu Petrescu Data 5 iunie 2019 10:35:53
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define MAX 10002
#define INF 2e9

using namespace std;

struct
{
    int energie;
    int cost;
}a;

int dp[MAX];

int main()
{
    int G, W, i, j, maxVal, Min = INF;

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

    fin >> G >> W;

    maxVal = 0;

    for(i = 1; i < MAX; i++)dp[i] = INF;

    for(i = 0; i < G; i++)
    {
        fin >> a.energie >> a.cost;

        for(j = maxVal; j >= 0; j--)
        {
            if(j + a.energie < MAX && dp[j] + a.cost < dp[j + a.energie])
                dp[j + a.energie] = dp[j] + a.cost;
        }

        if(maxVal + a.energie < MAX)maxVal += a.energie;
        else maxVal = MAX - 1;
    }

    if(maxVal < W)fout << -1;
    else
    {
        for(i = W; i < MAX; i++)
            if(dp[i] != INF && dp[i] < Min)
                Min = dp[i];

        fout << Min;
    }

    fin.close();
    fout.close();

    return 0;
}