Cod sursa(job #3149595)

Utilizator jumper007Raul Butuc jumper007 Data 10 septembrie 2023 13:40:41
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

const int INF = 1e9; // O valoare mare reprezentând infinit

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

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

    vector<pair<int, int>> generators(G); // perechi de (energie, cost)
    for (int i = 0; i < G; ++i) {
        fin >> generators[i].first >> generators[i].second;
    }

    vector<int> dp(W + 1, INF);
    dp[0] = 0;

    for (const auto& gen : generators) {
        int E = gen.first;
        int C = gen.second;

        for (int i = W; i >= E; --i) {
            if (dp[i - E] != INF) {
                dp[i] = min(dp[i], dp[i - E] + C);
            }
        }
    }

    int min_cost = INF;
    for (int i = W; i <= W; ++i) {
        min_cost = min(min_cost, dp[i]);
    }

    if (min_cost == INF) {
        fout << "-1\n";
    } else {
        fout << min_cost << "\n";
    }

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

    return 0;
}