Cod sursa(job #10810)

Utilizator DranaXumAlexandru Dumitru Paunoiu DranaXum Data 29 ianuarie 2007 16:10:00
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>

int a[1002],b[1002],c[1002];

int main()
{
   long int s,s1,s2,min=-1;
   int t,g,w,ok=1,i;
   FILE *fin;
   FILE *fout;
   fin=fopen("energii.in","r");
   fout=fopen("energii.out","w");
   fscanf(fin,"%d %d",&g,&w);
   s=0;
   for(i=1;i<=g;i++)
   {   fscanf(fin,"%d %d",&a[i],&b[i]); s+=a[i];}
   fclose(fin);
   if(s<w) fprintf(fout,"%d",-1);
   else
   {
      while(ok)
      {  s1=s2=0;
         c[g]++;
         for(i=g;i>=2;i--)
         {
            t=c[i];
            if(c[i]>1) 
             {  c[i]=t%2;
            c[i-1]+=t/2;}
         }  
         ok=0;
         for(i=g;i>=1;i--)
            if(c[i]) {s1+=a[i]; s2+=b[i];}
            else ok=1; 
         if(s1>=w)
            if(min<0) min=s2; 
            else if(min>=s2) min=s2;
      }
      fprintf(fout,"%d",min);
   }
   fclose(fout);
   return 0;
}