Cod sursa(job #1789644)

Utilizator stefan_gheorgheGheorghe Stefan stefan_gheorghe Data 27 octombrie 2016 12:18:20
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#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;
}