Cod sursa(job #697182)

Utilizator bDannYdBurileanu Daniel bDannYd Data 28 februarie 2012 22:54:59
Problema Energii Scor 45
Compilator c Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>

int main()
{
    FILE *fin,*fout;
    int i,j,aux,g,w,eg[1002],cg[1002],s,cost;
    float ax,rap[1002];

    fin=fopen("energii.in","rt");
    fscanf(fin,"%d",&g);
    fscanf(fin,"%d",&w);
    for(i=0;i<g;i++)
    {
        fscanf(fin,"%d",&eg[i]);
        fscanf(fin,"%d",&cg[i]);
        rap[i]=(float)eg[i]/cg[i];
    }
    fclose(fin);

    for(i=0;i<g-1;i++)
        for(j=i+1;j<g;j++)
            if(rap[i]<rap[j])
                {
                    aux=eg[i];
                    eg[i]=eg[j];
                    eg[j]=aux;
                    aux=cg[i];
                    cg[i]=cg[j];
                    cg[j]=aux;
                    ax=rap[i];
                    rap[i]=rap[j];
                    rap[j]=ax;
                }

    for(i=0;i<g;i++)
        printf("%d %d %f\n",eg[i],cg[i],rap[i]);
    i=0;
    s=0;cost=0;
    while(i<g && s<w)
    {
        s+=eg[i];
        cost+=cg[i];
        i++;
    }

    fout=fopen("energii.out","wt");
    if(s<w) fprintf(fout,"-1");
    else fprintf(fout,"%d",cost);
    fclose(fout);

    return 0;
}