Pagini recente » Cod sursa (job #637958) | Cod sursa (job #738857) | Cod sursa (job #732165) | Cod sursa (job #1302082) | Cod sursa (job #2394452)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct energie
{
int cantitate;
int cost;
double raport;
};
energie v[5005];
bool cmp(energie a, energie b)
{
if (a.raport == b.raport)
{
return 1;
}
if (a.raport > b.raport)
{
return 0;
}
return 1;
}
int main()
{
int nr_generatoare, cantitate_energie;
fin >> nr_generatoare;
fin >> cantitate_energie;
for (int i = 0; i < nr_generatoare; i++)
{
fin >> v[i].cantitate >> v[i].cost;
v[i].raport = (double)v[i].cost / v[i].cantitate;
}
sort(v, v + nr_generatoare, cmp);
long long cnt = 0;
long long ans = 0;
for(int i = 0; i < nr_generatoare; i++)
{
if (cnt >= nr_generatoare)
{
break;
}
if (cnt < nr_generatoare)
{
cnt = cnt + v[i].cantitate;
ans = ans + v[i].cost;
}
}
if (cnt < nr_generatoare)
{
fout << -1;
}
else
{
fout << ans;
}
fin.close();
fout.close();
return 0;
}