Pagini recente » Cod sursa (job #3194398) | Cod sursa (job #3149613) | Cod sursa (job #3229270) | Cod sursa (job #1166097) | Cod sursa (job #3149601)
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
#include <algorithm>
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] = minimum cost for generating i units of energy
dp[0] = 0; // cost for 0 units of energy is 0
for (int i = 0; i < G; ++i) {
int E, C;
fin >> E >> C;
for (int w = W; w >= 0; --w) {
if (dp[w] == INT_MAX) continue; // We can't generate exactly w units of energy
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;
}