Cod sursa(job #2428439)

Utilizator PetrescuAlexandru Petrescu Petrescu Data 5 iunie 2019 10:30:50
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 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;

    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;
    }

    for(i = W; i < MAX; i++)
        if(dp[i] != INF)
        {
            fout << dp[i];
            i = MAX;
        }

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

    return 0;
}