Cod sursa(job #2833461)

Utilizator Maftei_TudorMaftei Tudor Maftei_Tudor Data 15 ianuarie 2022 11:21:45
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 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;

}