Cod sursa(job #548516)

Utilizator andreas_mihAndreas Mihaloianis andreas_mih Data 7 martie 2011 15:12:10
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
using namespace std;
FILE*in=fopen("energii.in","r");
FILE*out=fopen("energii.out","w");
int i,j,g;
long double b,a,s,m,w,total;
long double e;
typedef struct generator
{
    long double a; //cant
    long double b; //pret
    long double e;
};
generator v[1003];
int main()
{
    fscanf(in,"%d%lf",&g,&w);
    for(i=0;i<g;i++)
            {
            fscanf(in,"%lf%lf",&v[i].a,&v[i].b);
            total+=v[i].a;
            v[i].e=(long double)v[i].a/v[i].b;
            }
            if(total<w)
            {
                fprintf(out,"-1");
                return 0;
            }
    for(i=0;i<g-1;i++)
        for(j=i+1;j<g;j++)
            if(v[i].e<v[j].e)
                {
                v[1003]=v[i];
                v[i]=v[j];
                v[j]=v[1003];
                }
    i=0;
    while(w>0 && i<g)
        {
            w=w-v[i].a;
            s=s+v[i].b;
            i++;
        }
            fprintf(out,"%lf",s);

fclose(in);
fclose(out);
return 0;
}