Cod sursa(job #2001520)

Utilizator tiberiu392Tiberiu Ungurianu tiberiu392 Data 16 iulie 2017 23:34:03
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;
ifstream f("rucsac.in");
ofstream d("rucsac.out");
int i,n,man1,inv, ordine[1100];
double a[1100],g[1100],ef[1100],gv,man,c;
int main()
{
    f>>n>>gv;
for(i=1;i<=n;i++)
{
    f>>g[i]>>a[i];
    ordine[i]=i;
    ef[i]=a[i]/g[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=a[i];
        a[i]=a[i+1];
        a[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];
    c=c+a[i];

    }
    else
    {
        c+=a[i]*gv/g[i];
        gv=0;
    }
    i++;
}
d<<c;
    return 0;
}