Cod sursa(job #3154408)

Utilizator MoraZ3UMorariu Razvan MoraZ3U Data 4 octombrie 2023 17:25:19
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");

const int MAX_G = 1005;
const int MAX_W = 5005;
const int INF = 1e9;

struct Generator {
    int energie;
    int cost;
};

Generator gen[MAX_G];
int dp[MAX_W];

int main() {
    int G, W;
    fin >> G >> W;

    for (int i = 0; i < G; i++) {
        fin >> gen[i].energie >> gen[i].cost;
    }

    fill(dp, dp + W + 1, INF);
    dp[0] = 0;

    for (int i = 0; i < G; i++) {
        int EGi = gen[i].energie;
        int CGi = gen[i].cost;

        for (int j = EGi; j <= W; j++) {
            dp[j] = min(dp[j], dp[j - EGi] + CGi);
        }
    }

    if (dp[W] == INF) {
        fout << -1 << endl;
    }
    else {
        fout << dp[W] << endl;
    }

    return 0;
}