Cod sursa(job #2825752)

Utilizator George_CristianGeorge Dan-Cristian George_Cristian Data 5 ianuarie 2022 09:37:48
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

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

#define WMAX 5005
#define INF ((1<<30)-1)

int G, W, dp[WMAX];

void initializare() {
    for (int i = 1; i <= W; i++)
        dp[i] = INF;
}

void rezolvare() {
    int EG, CG;
    for (int i = 1; i <= G; i++) {
        f >> EG >> CG;
        if (EG > W) {
            for (int en = 1; en <= W; en++)
                dp[en] = min(dp[en], CG);
            continue;
        }
        for (int en = W; en >= EG; en--)
            dp[en] = min(dp[en], dp[en - EG] + CG);
        for (int en = 1; en < EG; en++)
            dp[en] = min(dp[en], CG);
    }
}

int main() {
    f >> G >> W;
    initializare();
    rezolvare();
    if (dp[W] == INF)
        g << -1;
    else
        g << dp[W];
    return 0;
}