Cod sursa(job #343230)

Utilizator prdianaProdan Diana prdiana Data 25 august 2009 12:23:25
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define MAXN 10000
#define MAXG 1001
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);

	int nrg,minc,best[MAXN],i,j,c[MAXG],e[MAXG],min = 99999999;
	for (i=0;i<MAXN;i++)
	{
		best[i] = -1;
	}
	scanf("%d%d",&nrg,&minc);
	
	for (i=1;i<=nrg;i++)
	{
		scanf("%d%d",&e[i],&c[i]);
	}
	best[0] = 0;
	for (i=1;i<=nrg;i++)
	{
		for (j=minc;j>=0;j--)
		{
			if (best[j] != -1)
			{
				if (j + e[i] < minc)
				{
					if (best[j+e[i]]>best[j]+c[i] || best[j+e[i]] == -1)
					{
						best[j+e[i]] = best[j]+c[i];
					}
				}
				else
				{
					if (best[j]+c[i] < min)
					{
						min = best[j]+c[i];
					}
				}
			}
		}
	}
	if (min ==  99999999)
	{
		printf("-1");
	}
	else
	{
		printf("%d",min);
	}

	return 0;
}