Cod sursa(job #2276414)

Utilizator GarboteialexGarbotei Alex Garboteialex Data 4 noiembrie 2018 18:27:32
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda alexei1 Marime 0.83 kb
#include <fstream>

using namespace std;

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

const int DM = 5e4 + 1;
const int inf = 9e8;

int g,w;
int dp[DM][DM];

struct generator
{
    int energy; int cost;
} gen[DM];

int min(int a, int b)
{
    if(a < b)
        return a;
    return b;
}

int main()
{
    fin >> g >> w;
    for(int i = 1; i <= g; i++)
        fin >> gen[i].energy >> gen[i].cost;
    
    for(int i = 0; i <= g; i++)
        for(int j = 0; j <= w; j++)
            dp[i][j] = inf;
    
    for(int i = 1; i <= g; i++)
        for(int j = 0; j <= w; j++)
        {
            dp[i][j] = dp[i - 1][j];
            if(gen[i].energy >= j)
                dp[i][j] = min(dp[i][j], gen[i].cost);
            else dp[i][j] = min(dp[i][j], dp[i - 1][j - gen[i].energy] + gen[i].cost);
        }
    
    fout << dp[g][w];
    
}