Cod sursa(job #1000958)

Utilizator sk8ervinMaftei Ervin sk8ervin Data 24 septembrie 2013 08:18:32
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,G;
struct {int g,v,ind;}v[100],aux;
ofstream g("rucsac.out");
ifstream f("rucsac.in");
void citire()
{
 f>>n>>G;
 for(int 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((float)(v[i].v/v[i].g)<(float)v[i+1].v/v[i+1].g){aux=v[i];v[i]=v[i+1];v[i+1]=aux;ok=1;}
    }
    while(ok);
}
void greedy()
{
    int i;float S=0;
    g<<v[p].poz<<" ";
    for(i=2;i<=n&&G>0;i++)
        if(v[i].g<=G){G-=v[i].g;S+=v[i].v;g<<v[i].ind<<" ";}
        else{S+=(float)(v[i].val*G)/v[i].g;G=0;g<<v[i].ind<<"\n";}
    g<<S;
    g.close();
}
int main()
{
    citire();
    ordo();
    greedy();
    return 0;
}