Cod sursa(job #153005)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 9 martie 2008 23:31:37
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
long n,k,i,j,max,e[1001],p[1001],s[5000001],min;
FILE *f,*g;
int main()
{ f=fopen("energii.in","r"); g=fopen("energii.out","w");
  fscanf(f,"%d%d",&n,&k);
  for(i=1;i<=n;i++) fscanf(f,"%d%d",&e[i],&p[i]);
  for(i=1;i<=n;i++)
   { for(j=max;j>=0;j--)
      { if((s[j]+p[i]<s[j+e[i]]||s[j+e[i]]==0)&&(s[j]||j==0)&&j+e[i]<5000001)
	 { s[j+e[i]]=s[j]+p[i];
	   if(j+e[i]>max&&j+e[i]>k) max=k; else
	   if(j+e[i]>max&&j+e[i]<=k)max=j+e[i];
	   if(min==0&&j+e[i]>=k) min=s[j]+p[i]; else if(s[j]+p[i]<min&&j+e[i]>=k) min=s[j]+p[i];
	 }
      }
   }
  if(min!=0) fprintf(g,"%ld",min); else fprintf(g,"-1");
  fclose(g);
  return 0;
}