Cod sursa(job #1000962)

Utilizator asgardulChelmus Rares asgardul Data 24 septembrie 2013 08:28:19
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n;
float G;
struct
{
    float g,v;
    int ind;
}v[100],aux;
void cit()
{
    int i;
    f>>n>>G;
    for(i=1;i<=n;i++)
    {
        f>>v[i].g>>v[i].v;
        v[i].ind=i;
    }
    f.close();
}
void ordo()
{
    int i,ok;
    do
    {
        ok=0;
        for(i=1;i<n;i++)
            if(v[i].v/v[i].g<v[i+1].v/v[i+1].g)
            {
                ok=1;
                aux=v[i];
                v[i]=v[i+1];
                v[i+1]=aux;
            }
    }
    while(ok);
}
void greedy()
{
    int i,a[100],k=1;
    float s=0;
    ordo();
    for(i=1;i<=n&&G>0;i++)
        if(v[i].g<=G)
        {
            G-=v[i].g;
            s+=v[i].v;
            a[k++]=v[i].ind;
        }
    g<<s<<"\n";
    for(i=1;i<=k;i++)
        g<<a[i]<<" ";
    g.close();
}
int main()
{
    cit();
    greedy();
    return 0;
}