Pagini recente » Cod sursa (job #1233638) | Cod sursa (job #3275872) | Cod sursa (job #2892010) | Cod sursa (job #2784951) | Cod sursa (job #2589358)
/** Complexitate
O(N logN <- sortarea + N <- determinarea castigului) = O(N logN)
**/
#include <bits/stdc++.h>
using namespace std;
ifstream in("energii.in");
ofstream out("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++) {
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;
}