Cod sursa(job #1282378)

Utilizator alexhulutaHuluta Alexandru alexhuluta Data 4 decembrie 2014 08:25:05
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("rucsac.in");
ofstream p("rucsac.out");

int a[100],N,M;
float v[100],g[100],x[100],Gr;

void  citeste()
{
    int i;
    f>>N>>M;
    for (i=0;i<N;++i)
    {
        a[i]=i;
        f>>v[i]>>g[i];
    }
    f.close();
}

void sortare()
{
    int i,aux,schimb;
    do
    {
        schimb=0;
        for (i=0;i<N-1;++i)
            if (v[a[i]]/g[a[i]]<v[a[i+1]]/g[a[i+1]])
            {
                aux=a[i];
                a[i]=a[i+1];
                a[i+1]=aux;
                schimb=1;
            }
    }
    while (schimb);
}

void rezolva()
{
    int i;
    for (i=0,Gr=M;i<N && Gr>g[a[i]];++i)
    {
        x[a[i]]=1;
        Gr-=g[a[i]];
    }
}

void afisare()
{
    int i;
    for (i=0;i<N;++i)
        if (x[i]) p<<i+1<<" "<<x[i]*100<<endl;
    p.close();
}

int main()
{
    citeste();
    sortare();
    rezolva();
    afisare();
    return 0;
}