Cod sursa(job #48056)

Utilizator slayer4uVictor Popescu slayer4u Data 4 aprilie 2007 13:05:26
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
int g,n,i,j,kn[10002],x[1002],cost[5002],sum;
int main()
{
	freopen ("energii.in","rt",stdin);
	freopen ("energii.out","wt",stdout);
	
	scanf("%d %d",&n,&g);
	for (i=1;i<=10000;i++)
		kn[i]=32000;
	for (i=1;i<=n;i++)
		scanf("%d %d",&x[i],&cost[i]);
	for (i=1;i<=n;i++)
	{
		i=i;
		for (j=0;j<=g;j++)
		{
			if (kn[j]!=32000)
			{
				if (kn[j+x[i]]>kn[j]+cost[i])
					kn[j+x[i]]=kn[j]+cost[i];
			}
		}
		if (kn[x[i]]>cost[i])
			kn[x[i]]=cost[i];
	}

	for (i=g;g<=9999;g++)
		if (kn[g]!=32000)
			break;
	if (kn[g]==32000)
		printf("-1\n");
	else
		printf("%ld\n",kn[g]);
	return 0;
}