Cod sursa(job #1006744)

Utilizator mmiirrcceeaaMircea Panaite mmiirrcceeaa Data 7 octombrie 2013 17:53:32
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;
typedef struct {int g,val,ind;} OBIECT;
OBIECT v[100],aux;
int n,G;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
void citire()
{
    int i;
    f>>n>>G;
    for(i=1;i<=n;i++)
    {
        f>>v[i].g>>v[i].val;
        v[i].ind=i;
    }
    f.close();
}
void ordo()
{
    int ok,i;
    do
    {
        ok=0;
        for(i=1;i<n;i++)
            if((float)v[i].val/v[i].g<(float)v[i+1].val/v[i+1].g)
            {
                aux=v[i];
                v[i]=v[i+1];
                v[i+1]=aux;
                ok=1;
            }
    }
    while(ok);
}
void greedy()
{
    int i,S=0;
    ordo();
    for(i=1;i<=n&&G>0;i++)
        if(v[i].g<=G)
        {
            G=G-v[i].g;
            S=S+v[i].val;
        }
    g<<S;
    g.close();
}
int main()
{
    citire();
    greedy();
    return 0;
}