Cod sursa(job #159573)

Utilizator nicucelviteazniculcioiu andrei nicucelviteaz Data 14 martie 2008 11:24:09
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
int e,n,i,j,max;
int b[100],energ[100],c[100],cost[100];
int main(void)
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&n,&e);
	for(i=1;i<=n;i++)
		scanf("%d%d",&energ[i],&cost[i]);
	max=0;
	c[0]=0;
	b[0]=1;
	for(i=1;i<=n;i++)
		for(j=max;j>=0;j--)
			if(b[j]&&j<e)
			{
				if(b[j+energ[i]]==0)
				{
					b[j+energ[i]]=1;
					c[j+energ[i]]=c[j]+cost[i];
					if(j+energ[i]>max)
						max=j+energ[i];
				}
				else
					if(c[j]+cost[i]<c[j+energ[i]])
						c[j+energ[i]]=c[j]+cost[i];
			}
	if(c[e])
		printf("%d\n",c[e]);
	else
		printf("-1\n");
	return 0;
}