Cod sursa(job #671857)
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
struct element
{int eg, cg;
double rg;
}e;
vector<element> v;
bool ordo(element e1, element e2)
{if(e1.rg < e2.rg) return false;
else return true;
}
void afisare(vector<element> v)
{
vector<element>::iterator it;
for(it=v.begin();it!=v.end();++it)
cout<<it->eg<<" "<<it->cg<<" "<<it->rg<<endl;
}
using namespace std;
int main()
{int g,w,i,s=0,en,c;
ifstream f("energii.in");
f>>g>>w;
for(i=1;i<=g;i++)
{f>>en>>c;
e.eg=en;
e.cg=c;
e.rg=(double)e.eg/e.cg;
v.push_back(e);
}
sort(v.begin(), v.end(), ordo);
vector<element>::iterator it=v.begin();
while(s<w && it!=v.end())
{s+=it->eg;
++it;
}
ofstream h("energii.out");
h<<s;
h.close();
}