Pagini recente » Cod sursa (job #2448798) | Romanii medaliati la IOI | Cod sursa (job #2353890) | Cod sursa (job #1256304) | Cod sursa (job #3233791)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
#include <climits>
using namespace std;
int main() {
ifstream infile("energii.in");
ofstream outfile("energii.out");
int G, W;
infile >> G >> W;
vector<int> E(G);
vector<int> C(G);
for (int i = 0; i < G; ++i) {
infile >> E[i] >> C[i];
}
// Initialize dp array with a large value
vector<int> dp(W + 1, INT_MAX);
dp[0] = 0;
// Update dp array for each generator
for (int i = 0; i < G; ++i) {
for (int j = W; j >= 0; --j) {
if (dp[j] != INT_MAX && j + E[i] <= W) {
dp[j + E[i]] = min(dp[j + E[i]], dp[j] + C[i]);
}
}
}
int min_cost = INT_MAX;
for (int i = W; i <= W; ++i) {
min_cost = min(min_cost, dp[i]);
}
if (min_cost == INT_MAX) {
outfile << -1 << endl;
} else {
outfile << min_cost << endl;
}
infile.close();
outfile.close();
return 0;
}