Cod sursa(job #1781947)

Utilizator alexhulutaHuluta Alexandru alexhuluta Data 17 octombrie 2016 17:26:34
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");

int main()
{
   int n,i,aux,ok;
    float c[101],g[101],e[101],aux2,gmax,p;
    int nr[101];
    f>>n>>gmax;
    for(i=1;i<=n;i++)
        f>>g[i];
    for(i=1;i<=n;i++)
        f>>c[i];
    for(i=1;i<=n;i++)
    {
        e[i]=c[i]/g[i];
        nr[i]=i;
    }
    ok=0;
    while(ok==0)
    {
        ok=1;
        for(i=1;i<n;i++)
            if(e[i]<e[i+1])
        {
            aux=g[i];
            g[i]=g[i+1];
            g[i+1]=aux;
            aux=c[i];
            c[i]=c[i+1];
            c[i+1]=aux;
            aux=e[i];
            e[i]=e[i+1];
            e[i+1]=aux;
            aux=nr[i];
            nr[i]=nr[i+1];
            nr[i+1]=aux;
            ok=1;
        }}
        c=0;i=1;
        while(gmax>0&&i<=n)
        {
            if(g[i]<=gmax)
            {
                g<<nr[i]<<" "<<1<<'\n';
                gmax=gmax-g[i];
                aux2=aux2+c[i];
            }
            else
            {
                p=gmax/g[i];
                g<<nr[i]<<' '<<p<<'\n';
                aux2=aux2+c[i]*p;
                gmax=0;
            }i++;
        }g<<c;

    return 0;
}