Cod sursa(job #2589348)

Utilizator RobertLearnsCDragomir Robert. RobertLearnsC Data 26 martie 2020 10:59:19
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
/** 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;
}