Cod sursa(job #1707949)

Utilizator HamsaSanda Nicolaev Hamsa Data 26 mai 2016 10:35:14
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 g("rucsac.out");
 
int o[100],N,M;
float val[100],greu[100],x[100],Gr;
 
void  citeste()
{
    int i;
    f>>N>>M;
    for (i=0;i<N;++i)
    {
        o[i]=i;
        f>>val[i]>>greu[i];
    }
}
 
void sort()
{
    int i,aux,schimb;
    do
    {
        schimb=0;
        for (i=0;i<N-1;++i)
            if (val[o[i]]/greu[o[i]]<val[o[i+1]]/greu[o[i+1]])
            {
                aux=o[i];
                o[i]=o[i+1];
                o[i+1]=aux;
                schimb=1;
            }
    }
    while (schimb);
}
 
void rezolva()
{
    int i;
    for (i=0,Gr=M;i<N && Gr>greu[o[i]];++i)
    {
        x[o[i]]=1;
        Gr-=greu[o[i]];
    }
}
 
void afisare()
{
    int i;
    for (i=0;i<N;++i)
        if (x[i]) g<<i+1<<" "<<x[i]*100<<endl;
}
 
int main()
{
    citeste();
    sort();
    rezolva();
    afisare();
    return 0;
}