Cod sursa(job #357629)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 19 octombrie 2009 22:29:17
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#define INF 10000
#define G 1001
#define W 5001
int energie[G];
int cost[G];
int lucru[W];
int main ()
{FILE *fin=fopen("energii.in","r");
 if(!fin)return 0;
 FILE *fout=fopen("energii.out","w");
 if(!fout)return 0;
 int g,w,i,j,costTot=INF;
 fscanf(fin,"%d %d",&g,&w);
 for (i=0;i<g;i++)
 {fscanf(fin,"%d %d",&energie[i],&cost[i]);
 }
 
 lucru[0]=0;
 for (i=1;i<w;i++)
 {lucru[i]=INF;
 }
 
 for (i=w-1;i>=0;i--)
 {for (j=0;j<g;j++)
  {if(energie[j]+i>=w)
   {if(cost[j]+lucru[i]<costTot)
    {costTot=cost[j]+lucru[i];
	}
   }
   else
   {if(cost[j]+lucru[i]<lucru[i+energie[j]])
   {lucru[i+energie[j]]=cost[j]+lucru[i];
	}
   }
  }
 }
 fprintf(fout,"%d",costTot);
 fclose(fout);
 
 return 0;

}