Cod sursa(job #327920)

Utilizator ZethpixZethpix Zethpix Data 30 iunie 2009 16:09:13
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
FILE *f,*g;
long min,max=0,n,w,i,j,x,y;
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<=n;i++){
  fscanf(f,"%ld%ld",&x,&y);
  for (j=max;j>0;j--)
   if (d[j]!=0)
    if (d[j+x]==0){
     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;
      }
  if (d[x]==0){
   d[x]=y;
   if (x>max) max=x;
  }
   else
    if (d[x]>y){
     d[x]=y;
     if (x>max) max=x;
    }
 }
 min=max+1;
 while(max>=w){
  if (d[max]!=0)
   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;
}