Cod sursa(job #3042142)

Utilizator SSKMFSS KMF SSKMF Data 4 aprilie 2023 09:40:06
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

ifstream cin ("energii.in");
ofstream cout ("energii.out");

struct Centrala {
    int cantitate , pret;
    float raport;
};

vector <Centrala> optiuni;

bool Comparatie (Centrala optiune_1 , Centrala optiune_2)
{
    return optiune_1.raport < optiune_2.raport;
}

int main ()
{
    int lungime , energie_necesara;
    cin >> lungime >> energie_necesara;

    optiuni.resize(lungime);
    for (int indice = 0 ; indice < lungime ; indice++)
    {
        cin >> optiuni[indice].cantitate >> optiuni[indice].pret;
        optiuni[indice].raport = (float)optiuni[indice].pret / optiuni[indice].cantitate;
    }

    sort(optiuni.begin() , optiuni.end() , Comparatie);

    float cost_minim = 0;
    for (int indice = 0 ; indice < lungime && energie_necesara ; indice++)
        if (optiuni[indice].cantitate <= energie_necesara)
            cost_minim += optiuni[indice].pret , energie_necesara -= optiuni[indice].cantitate;
        else
            cost_minim += energie_necesara * optiuni[indice].raport , energie_necesara = 0;

    if (energie_necesara)
        cout << -1;
    else
        cout << cost_minim;

    cout.close(); cin.close();
    return 0;
}