Cod sursa(job #102573)

Utilizator tazuAndrei A. tazu Data 14 noiembrie 2007 15:46:06
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>
int sol[5001];
int main(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	int g,w,eg[1001],cg[1001];
	scanf("%d%d",&g,&w);
	for(int i=1;i<=g;i++)
		scanf("%d%d",&eg[i],&cg[i]);
	sol[0]=1;
	for(int i=1;i<=g;++i)
		for(int j=w-1;j>=0;--j)
			if(sol[j]){
				if(j+eg[i]>=w&&(sol[j]+cg[i]<sol[w]||sol[w]==0))
					sol[w]=sol[j]+cg[i];
				if(j+eg[i]<w&&(sol[j]+cg[i]<sol[j+eg[i]]||sol[j+eg[i]]==0))
					sol[j+eg[i]]=sol[j]+cg[i];
			}
	printf("%d\n",sol[w]-1);
	fclose(stdin);
	fclose(stdout);
	return 0;
}