Pagini recente » Cod sursa (job #654721) | Cod sursa (job #1681216) | Cod sursa (job #1158454) | Cod sursa (job #305131) | Cod sursa (job #2715268)
#include <fstream>
#include <vector>
using namespace std;
void readingGenerators(vector<pair<int, int>>& generators, int& G, int& W) {
ifstream fin("energii.in");
fin >> G >> W;
int egi, cgi;
for (int i = 0; i < G; ++i) {
fin >> egi >> cgi;
generators.push_back(pair<int, int>(egi, cgi));
}
}
int minimumCost(vector<pair<int, int>>& generators, int G, int W) {
pair<int, int> defaultPair = pair<int, int>(0, 0);
++W;
vector<pair<int, int>> temp(W, defaultPair);
for (int i = 0; i < G; ++i) {
vector<pair<int, int>> current(W, defaultPair);
for (int j = 1; j < W; ++j) {
if (temp[j].first >= j) {
if (generators[i].first >= j) {
if (temp[j].second < generators[i].second)
current[j] = temp[j];
else
current[j] = generators[i];
}
}
else {
if (generators[i].first == j)
current[j] = generators[i];
else {
pair<int, int> newPair = pair<int, int>(temp[j].first + generators[i].first, temp[j].second + generators[i].second);
current[j] = newPair;
}
}
}
temp = current;
}
if (temp[W - 1].first < W - 1)
return -1;
return temp[W - 1].second;
}
int main() {
int G, W;
vector<pair<int, int>> generators;
readingGenerators(generators, G, W);
ofstream fout("energii.out");
fout << minimumCost(generators, G, W);
return 0;
}