Cod sursa(job #704798)

Utilizator alex136Alexandru Calin alex136 Data 2 martie 2012 20:34:26
Problema Energii Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>

FILE *f;
int G[1001],C[1001];
float r[1001],s;
int E,P,i,j,N,W,t;

int main(){
    f=fopen("energii.in","r");
    fscanf(f,"%d\n%d\n",&N,&W);
    for(i=1;i<=N;i++){
        fscanf(f,"\n%d %d",&G[i],&C[i]);
        r[i]=G[i];s=C[i];
        r[i]=r[i]/s;
        E+=G[i];
        P+=C[i];
    }
    fclose(f);
    f=fopen("energii.out","w");
    if(E<W){fprintf(f,"-1\n");fclose(f);return 0;}
    else if(E==W){fprintf(f,"%d\n",N);fclose(f);return 0;}
    j=1;
    while(j){
        j=0;
        for(i=2;i<=N;i++) if(r[i]<r[i-1]){
            s=r[i-1];r[i-1]=r[i];r[i]=s;j=1;
            t=G[i-1];G[i-1]=G[i];G[i]=t;j=1;
            t=C[i-1];C[i-1]=C[i];C[i]=t;j=1;
        }
    }
    for(i=N;i>0;i--){
        if(E-G[i]>=W){
            E-=G[i];
            P-=C[i];
        }
        else break;
    }
    fprintf(f,"%d\n",P);
    fclose(f);
    return 0;
}