Cod sursa(job #1000967)

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