Pagini recente » Cod sursa (job #1019031) | Cod sursa (job #3248369) | Cod sursa (job #789255) | Cod sursa (job #167755) | Cod sursa (job #2684452)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct generator
{
int energie;
int cost;
float raport;
};
bool sortare(generator a, generator b)
{
if(a.raport<b.raport)
return 1;
return 0;
}
int main()
{
ifstream in("energii.in");
ofstream out ("energii.out");
int cost_minim=1000000000;
int cate_generatoare, cost_repornire;
generator generatoare[1005];
in>>cate_generatoare>>cost_repornire;
for(int i=0; i<cate_generatoare; i++)
{
in>>generatoare[i].energie>>generatoare[i].cost;
generatoare[i].raport=(float)generatoare[i].cost/generatoare[i].energie;
}
sort(generatoare,generatoare+cate_generatoare,sortare);
int variabila_cost=0,variabila_energie=0,st=0;
for(int i=0; i<cate_generatoare; i++)
{
variabila_cost+=generatoare[i].cost;
variabila_energie+=generatoare[i].energie;
if(variabila_energie>=cost_repornire)
{
while(variabila_energie>=cost_repornire)
{
cost_minim=min(cost_minim,variabila_cost);
variabila_cost-=generatoare[st].cost;
variabila_energie-=generatoare[st].energie;
st++;
}
}
}
if(cost_minim==1000000000)
out<<-1;
else
out<<cost_minim;
return 0;
}