Cod sursa(job #714515)

Utilizator gabrielvGabriel Vanca gabrielv Data 15 martie 2012 20:02:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#define oo 1<<30
#define MAX	5100
#define MAX2 1005
#define min(a,b) ((a)<(b)?(a):(b))
int best[2*MAX],power[MAX2],cost[MAX2];
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	int G,W,S=0,i,j,sol;
	scanf("%d %d",&G,&W);
	for(int i=1;i<=G;i++)
	{
		scanf("%d %d",&power[i],&cost[i]);
		S=S+power[i];
	}
	best[0]=1;
	for(i=1;i<=G;i++)
		for(j=MAX;j>=0;j--)
			if(best[j])
				if((!best[j+power[i]])||(best[j+power[i]]>best[j]+cost[i]))
					best[j+power[i]]=best[j]+cost[i];
	for(i=W,sol=oo;i<=2*MAX;i++)
		if((best[i]<sol)&&best[i])
			sol=best[i];
	if(sol==oo)
		printf("-1\n");
	else
		printf("%d",sol-1);
	return 0;
}