Pagini recente » Cod sursa (job #2642312) | Cod sursa (job #2375132) | Cod sursa (job #3163254) | Cod sursa (job #2896758) | Cod sursa (job #3149599)
#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;
}