Pagini recente » Cod sursa (job #375267) | Cod sursa (job #1711023) | Cod sursa (job #2329155) | Cod sursa (job #1347205) | Cod sursa (job #1789644)
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream x("rucsac.out");
double c[5001],g[5001],ef[5001],gv,man,castig;
int n,i,man1,inv,ordine[5001];
int main()
{
f>>n>>gv;
for (int i=1;i<=n;i++) f>>g[i]>>c[i],ordine[i]=i,ef[i]=g[i]/c[i];
do
{inv=0;
for (i=1;i<=n-1;i++)
if(ef[i]>ef[i+1]) man=ef[i],ef[i]=ef[i+1],ef[i+1]=man,man=c[i],c[i]=c[i+1],c[i+1]=man,man=g[i],g[i]=g[i+1],g[i+1]=man,inv=1,man1=ordine[i],ordine[i]=ordine[i+1],ordine[i+1]=man1;
}
while (inv);
{i=1;
while (gv>0 && i<=n) if (gv>g[i]) gv-=g[i],castig+=c[i],i++;
else castig+=c[i]*gv/g[i],gv=0,i++;
}
x<<int(castig);
return 0;
}