Cod sursa(job #206305)

Utilizator IrnukIrina Grosu Irnuk Data 5 septembrie 2008 20:12:39
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<fstream.h>   
  
ifstream fin("energii.in");   
ofstream fout("energii.out");   
  
unsigned long cost;   
int g,w;   
struct c   
{   
    int eg,ec;   
    float m;   
}v[1002],aux;   
  
void citire()   
{   
    int i;   
    fin>>g>>w;   
    for(i=0;i<g;i++)   
    {   
        fin>>v[i].eg>>v[i].ec;   
        v[i].m=(float)v[i].eg/v[i].ec;   
    }   
}   
  
  
void bubble_sort()   
{   
    int ord,i;   
    do  
    {   
        ord=1;   
        for(i=0;i<g-1;i++)   
            if(v[i].m<v[i+1].m)   
            {   
                aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; ord=0;   
            }   
            else    
                if(v[i].m==v[i+1].m)   
                    if(w-v[i].eg>w-v[i+1].eg)   
                    {   
                        aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; ord=0;   
                    }   
    }while(ord==0);   
}   
  
int main()   
{   
    citire();   
    int i=0;   
    bubble_sort();   
    while(w>0 && i<g)   
    {   
        w-=v[i].eg;   
        cost+=v[i++].ec;   
    }   
    if(w<=0)   
    fout<<cost<<'\n';   
    else fout<<"-1\n";   
    fout.close();   
    return 0;   
}