Pagini recente » Cod sursa (job #683576) | Cod sursa (job #1071924) | Cod sursa (job #2703541) | Cod sursa (job #2827736) | Cod sursa (job #549447)
Cod sursa(job #549447)
#include<fstream>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int G,W;
struct generator
{
double eff;
int enprod;
int encost;
};
vector<generator> vect;
bool comp(generator g1, generator g2)
{
return (g1.eff > g2.eff);
}
int main()
{
ifstream fin("energii.in");
fin>>G>>W;
int W2 = W;
vect.reserve(G);
for(int c = 0; c < G; c++)
{
generator g;
fin>>g.enprod;
fin>>g.encost;
g.eff = (double)g.enprod / (double)g.encost;
vect.push_back(g);
}
fin.close();
sort(vect.begin(), vect.end(), comp);
int min = 0;
for(int c = 0; c < G; c++)
{
if(vect[c].enprod >= W)
{
W = 0;
min += vect[c].encost;
break;
}
else
{
W -= vect[c].enprod;
min += vect[c].encost;
}
}
int min2 = 0;
for(int c = G; c >= 0; c++)
{
if(vect[c].enprod >= W2)
{
W2 = 0;
min2 += vect[c].encost;
break;
}
else
{
W2 -= vect[c].enprod;
min2 += vect[c].encost;
}
}
ofstream fout("energii.out");
if(W2 != 0 && min > min2)
{
fout<<min;
}
else
{
if(W != 0)
fout<<"-1";
else
fout<<min;
}
fout.close();
return 0;
}