Cod sursa(job #152980)
Utilizator | Data | 9 martie 2008 22:55:54 | |
---|---|---|---|
Problema | Energii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include<stdio.h>
long n,k,i,j,max,e[1001],p[1001],s[5001];
FILE *f,*g;
void main()
{ f=fopen("energii.in","r"); g=fopen("energii.out","w");
fscanf(f,"%ld%ld",&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);
}