Cod sursa(job #714506)

Utilizator gabrielvGabriel Vanca gabrielv Data 15 martie 2012 19:56:16
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
#define oo 1<<30
#define MAX	1010000
#define MAX2 1005
int best[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=S;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<=S;i++)
		if((best[i]<sol)&&best[i])
			sol=best[i];
	if(sol==oo)
		printf("-1\n");
	else
		printf("%d",sol-1);
	return 0;
}