Cod sursa(job #253824)

Utilizator omu_salcamtache tudor omu_salcam Data 6 februarie 2009 12:41:17
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
FILE *f1,*f2;
long a,b,cc,i,j,k,n,w,g,et[1024][5005],e[1024],c[1024];
int main(){
	f1=fopen("energii.in","r");
	f2=fopen("energii.out","w");
	fscanf(f1,"%ld%ld",&g,&w);
	for(i=1;i<=g;i++){
		fscanf(f1,"%ld%ld",&e[i],&c[i]);
		et[0][e[i]]=1;
		et[1][e[i]]=c[i];
		et[2][e[i]]=i;
	}
	for(i=3;i<=w;i++){
		for(j=1;j<=g;j++){
			if(i-e[j]>0){
				if(et[0][i-e[j]]){
					cc=et[1][i-e[j]]+c[j];
					if(cc<et[1][i]||!et[0][i]){
						et[0][i]=1;
						et[1][i]=cc;
						et[2][i]=j;
						k=2;
						while(et[k][i-e[j]]){
							et[k+1][i]=et[k][i-e[j]];
							k++;
						}
					}
				}
			}
		}
	}
	fprintf(f2,"%ld\n",et[1][w]);
	return 0;
}