Cod sursa(job #327649)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 29 iunie 2009 18:23:58
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
using namespace std;

struct generator
{
double energie;
double cost;
double ef;
};

double g,w;
double cmin;
generator v[1002];

int main()
{
int i,gasit;
double aux;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%lf%lf",&g,&w);
for(i=1;i<=g;i++)
    {
    scanf("%lf%lf",&v[i].energie,&v[i].cost);    
    v[i].ef=v[i].energie/v[i].cost;
    }
do
    {
    gasit=0;
    for(i=1;i<=g-1;i++)
        {
        if(v[i].ef<v[i+1].ef)
            {
            aux=v[i].ef;v[i].ef=v[i+1].ef;v[i+1].ef=aux;
            aux=v[i].cost;v[i].cost=v[i+1].cost;v[i+1].cost=aux;
            aux=v[i].energie;v[i].energie=v[i+1].energie;v[i+1].energie=aux;
            gasit=1;
            }
        }
    }    
while(gasit);
i=1;
while( (w>0) && (i<=g) )
    {
    cmin+=v[i].cost;
    w-=v[i].cost;
    i=i+1;
    }
if(w>0)printf("-1");
else printf("%d",(int)cmin);
return 0;
}