Cod sursa(job #3149599)

Utilizator jumper007Raul Butuc jumper007 Data 10 septembrie 2023 13:44:18
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

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

    int G, W;
    fin >> G >> W;

    vector<int> dp(W + 1, INT_MAX);  // dp[i] = costul minim pentru a produce i unități de energie
    dp[0] = 0;  // costul pentru 0 unități de energie este 0

    for (int i = 0; i < G; ++i) {
        int E, C;
        fin >> E >> C;

        for (int w = 0; w <= W; ++w) {
            if (dp[w] == INT_MAX) continue;  // Nu putem produce exact w unități de energie

            int new_w = w + E;
            if (new_w <= W) {
                dp[new_w] = min(dp[new_w], dp[w] + C);
            }
        }
    }

    if (dp[W] == INT_MAX) {
        fout << "-1\n";
    } else {
        fout << dp[W] << "\n";
    }

    fin.close();
    fout.close();

    return 0;
}