Pagini recente » Cod sursa (job #1364518) | Cod sursa (job #2008624) | Cod sursa (job #1710273) | Cod sursa (job #1952766) | Cod sursa (job #3149596)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(pair<int, int> a, pair<int, int> b) {
return (float) a.first / a.second > (float) b.first / b.second;
}
int main() {
ifstream fin("energii.in");
ofstream fout("energii.out");
int G, W;
fin >> G >> W;
vector<pair<int, int>> generators(G); // perechi de (energie, cost)
for (int i = 0; i < G; ++i) {
fin >> generators[i].first >> generators[i].second;
}
sort(generators.begin(), generators.end(), compare);
int remainingEnergy = W;
int totalCost = 0;
for (const auto& gen : generators) {
int E = gen.first;
int C = gen.second;
if (remainingEnergy <= 0) break;
int times = min(remainingEnergy / E, 1); // cât de multe ori folosim acest generator
remainingEnergy -= times * E;
totalCost += times * C;
}
if (remainingEnergy > 0) {
fout << "-1\n";
} else {
fout << totalCost << "\n";
}
fin.close();
fout.close();
return 0;
}