Cod sursa(job #46920)

Utilizator slayer4uVictor Popescu slayer4u Data 3 aprilie 2007 10:57:40
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>
int g,n,i,j,kn[5002],x[1002],cost[1002],tata[5001],sum;
int main()
{
	freopen ("energii.in","rt",stdin);
	freopen ("energii.out","wt",stdout);
	
	scanf("%d %d",&n,&g);
	for (i=1;i<=g;i++)
		kn[i]=32000;
	for (i=1;i<=n;i++)
		scanf("%d %d",&x[i],&cost[i]),kn[x[i]]=1,tata[x[i]]=i;

	for (i=1;i<=n;i++)
	{
		for (j=1;j<=g;j++)
		{
			if (kn[j]!=0)
			{
				if (kn[j+x[i]]>kn[j]+1)
					kn[j+x[i]]=kn[j]+1,tata[j+x[j]]=i;
			}
		}
	}

	while (g)
	{
		sum+=cost[tata[g]];
		g-=x[tata[g]];
	}
	printf("%ld\n",sum);
	return 0;
}