Pagini recente » Cod sursa (job #2209387) | Cod sursa (job #1399520) | Cod sursa (job #1834122) | Cod sursa (job #2526746) | Cod sursa (job #2589348)
/** Complexitate
O(N logN <- sortarea + N <- determinarea costuluiMinim) = O(N logN)
**/
#include <bits/stdc++.h>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct generator {
long long energy, cost;
} generators[1001];
long long n, energyToRefill, minCost = 1e9;
bool compareGenerators(generator a, generator b) {
if(a.energy == b.energy) {
return a.cost < b.cost;
}
return a.energy > b.energy;
}
int main()
{
in >> n >> energyToRefill;
for(int i = 1; i <= n; i++) {
in >> generators[i].energy >> generators[i].cost;
}
sort(generators + 1, generators + 1 + n, compareGenerators);
long long fakeMinCost = 0, energyNeeded = energyToRefill;
for(int i = 1; i <= n && energyNeeded > 0; i++) {
if(energyNeeded - generators[i].energy >= 0) {
energyNeeded -= generators[i].energy;
fakeMinCost += generators[i].cost;
}
if(energyNeeded <= 0) {
if(fakeMinCost < minCost) {
minCost = fakeMinCost;
}
fakeMinCost = generators[i].cost;
energyNeeded = energyToRefill - generators[i].energy;
}
}
out << minCost;
return 0;
}