Cod sursa(job #3278284)

Utilizator dariuseranDelca Darius dariuseran Data 18 februarie 2025 23:30:37
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

const int INF = 1e9; // Valoare mare pentru inițializare

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

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

    vector<int> dp(W + 1, INF); // dp[j] = cost minim pentru energia j
    dp[0] = 0; // Costul pentru 0 energie este 0

    for (int i = 0; i < G; i++) {
        int EGi, CGi;
        fin >> EGi >> CGi;
        
        // Parcurgem descrescător pentru a evita suprascrierea valorilor deja folosite
        for (int j = W; j >= EGi; j--) {
            dp[j] = min(dp[j], dp[j - EGi] + CGi);
        }
    }

    // Găsim costul minim pentru orice valoare ≥ W
    int Cmin = *min_element(dp.begin() + W, dp.end());

    if (Cmin == INF)
        fout << -1 << "\n"; // Nu se poate obține energia cerută
    else
        fout << Cmin << "\n"; // Cost minim

    return 0;
}