Cod sursa(job #152982)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 9 martie 2008 22:57:24
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
long n,k,i,j,max,e[1001],p[1001],s[5001];
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)&&j+e[i]<=k) { s[j+e[i]]=s[j]+p[i]; if(j+e[i]>max) max=j+e[i]; }
	if((s[j]+p[i]<s[k])||(s[k]==0)&&k<j+e[i]) { s[k]=s[j]+p[i]; max=k; }
      }
   }
  fprintf(g,"%ld",s[k]);
  fclose(g);
  return 0;
}