Pagini recente » Cod sursa (job #3263718) | Cod sursa (job #399658) | Cod sursa (job #1478407) | Cod sursa (job #225801) | Cod sursa (job #1416455)
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
#include <algorithm>
#define Inf 0x3f3f3f3f
typedef struct generator {
int energy;
int cost;
} generator;
int main()
{
std::ifstream in("energii.in");
std::ofstream out("energii.out");
int G, W;
in >> G >> W;
std::vector<generator> gens(G + 1);
for (auto i = 1; i <= G; i++)
in >> gens[i].energy >> gens[i].cost;
std::vector<std::vector<int> > dp(G + 1, std::vector<int>(W + 1, Inf));
for (auto i = 1; i <= G; i++)
dp[i][0] = 0;
for (auto i = 1; i <= G; i++)
for (auto j = 1; j <= W; j++) {
if (j < gens[i].energy) {
dp[i][j] = std::min(dp[i - 1][j], gens[i].cost);
} else {
dp[i][j] = dp[i - 1][j];
dp[i][j] = std::min(dp[i - 1][j - gens[i].energy] + gens[i].cost
, dp[i][j]);
}
}
if (dp[G][W] != Inf)
out << dp[G][W] << '\n';
else out << -1 << '\n';
return 0;
}