Pagini recente » Cod sursa (job #2122753) | Cod sursa (job #3141504) | Cod sursa (job #1954196) | Cod sursa (job #2848044) | Cod sursa (job #3149595)
#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;
}