Pagini recente » Cod sursa (job #740744) | Cod sursa (job #2953422) | Cod sursa (job #985987) | Cod sursa (job #798102) | Cod sursa (job #3042142)
#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;
}