Cod sursa(job #2453485)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 3 septembrie 2019 21:58:10
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#define inf 2000000000
using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int dp[1024][5010], G, w, e[1024], c[1024];

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

int main() {
    f >> G >> w;
    for(int i = 1; i <= G; i++)
        f >> e[i] >> c[i];

    for(int i = 1; i <= G; i++)
        for(int j = 1; j <= w; j++)
            dp[i][j] = inf;

    ///dp[i][j] = costul minim pt a produce j energie cu primele i generatoare
    dp[1][e[1]] = c[1];
    for(int i = 2; i <= G; i++)
        for(int j = 1; j <= w; j++) {
            if(j >= e[i])
                dp[i][j] = minim(dp[i-1][j], dp[i-1][j-e[i]]+c[i]);
            else
                dp[i][j] = minim(dp[i-1][j], c[i]);
        }

    if(dp[G][w] != inf)
        g << dp[G][w];
    else
        g << -1;
}