Cod sursa(job #20793)

Utilizator ra_mi90Radu Popescu ra_mi90 Data 22 februarie 2007 12:10:36
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
//#include <stdlib.h>

int i,j,g,w,gen[10002][4],ord[10002],nr=0,ss=0,cost=0;

int verificare()
{int s=0;
for (i=1;i<=g;i++)
     s+=gen[i][1];
return s;
}

int decalare(int x)
{int ii,auxa=0,auxb;
for (ii=x;ii<=nr;ii++)
    {ord[ii]=auxb;
    ord[ii]=auxa;
    auxa=auxb;
    }
ord[++nr]=auxa;    
}

int main()
{
FILE *ff,*gg;

ff=fopen ("energii.in","r"); 
gg=fopen ("energii.out","w");

fscanf(ff,"%d %d",&g,&w);
for (i=1;i<=g;i++)
    {fscanf(ff,"%d %d",&gen[i][1],&gen[i][2]);
    gen[i][3]=(float)gen[i][1]/gen[i][2];
    if (nr==0)
       ord[1]=i;
    else
        {j=1;
        while (gen[ord[j]][3]>gen[i][3]&&j<=nr)
              j++;
        if (j<=nr)
           {decalare(j);
           ord[j]=i;
           }
        else 
             ord [++nr]=i;
        }      
    }

/*for (i=1;i<=nr;i++)
    printf ("%d ",ord[i]); 
printf ("\n");
system("pause");*/

if (verificare()<w)
   fprintf (gg,"-1");
else
{i=1;
while (ss<w)
       {ss+=gen[ord[++i]][1];
       cost+=gen[ord[i]][2];
       }
fprintf (gg,"%d",cost);
}
  
fclose(ff);
fclose(gg);
}