Cod sursa(job #327927)

Utilizator ZethpixZethpix Zethpix Data 30 iunie 2009 16:15:50
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
FILE *f,*g;
long min,max=0,n,w,i,j,x,y,maxn=100001;
long d[10000001];
int main(){
 f=fopen("energii.in","r");
 g=fopen("energii.out","w");
 fscanf(f,"%ld%ld",&n,&w);
 for (i=1;i<=maxn;i++) d[i]=-1;
 d[0]=0;
 for (i=1;i<=n;i++){
  fscanf(f,"%ld%ld",&x,&y);
  for (j=max;j>=0;j--)
   if (d[j]!=-1)
    if (d[j+x]==-1){
     d[j+x]=y+d[j];
     if (j+x>max) max=j+x;
    }
     else
      if (d[j+x]>d[j]+y){
       d[j+x]=y+d[i];
       if (j+x>max) max=j+x;
      }
 }
 min=max+1;
 while(max>=w){
  if (d[max]!=-1)
   if (d[max]<min) min=d[max];
  max--;
 }
 if (min==max+1) min=-1;
 fprintf(g,"%ld\n",min);
 fclose(f);
 fclose(g);
 return 0;
}