Pagini recente » Cod sursa (job #2220000) | Cod sursa (job #2664935) | Cod sursa (job #1327142) | Cod sursa (job #2140234) | Cod sursa (job #503122)
Cod sursa(job #503122)
#include <fstream>
#include <iostream>
using namespace std;
int w,g,eg[1001],cg[1001],i,maxim,c,j,nr,maximi;
float ef[1001],aux;
bool v[10001];
int main() {
ifstream f("energii.in");
ofstream gout("energii.out");
f>>g>>w;
for (i=1; i<=g; i++) {
f>>eg[i]>>cg[i];
ef[i]=(float)eg[i]/cg[i];
}
for (i=1; i<g; i++)
for (j=i+1; j<=g; j++)
if (ef[i]<ef[j]) {
aux=ef[i];
ef[i]=ef[j];
ef[j]=aux;
maxim=eg[i];
eg[i]=eg[j];
eg[j]=maxim;
maxim=cg[i];
cg[i]=cg[j];
cg[j]=maxim;
}
for (i=1; i<=g; i++)
if (eg[i]<=w) {
c+=cg[i];
w-=eg[i];
v[i]=true;
nr++;
}
//cout<<nr<<w<<endl;
/*for (i=1; i<=g; i++)
if (v[i])
cout<<i<<" ";*/
//cout<<endl;
if (w>0) {
if (nr==g)
gout<<-1;
else {
for (i=1; i<=g; i++)
if (!v[i] && maxim>cg[i]) {
maxim=cg[i];
maximi=i;
}
gout<<c+cg[i];
}
}
else
gout<<c;
return 0;
}