Cod sursa(job #343213)

Utilizator prdianaProdan Diana prdiana Data 25 august 2009 11:46:52
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 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+c[i]>minc)
				{
					if (best[j]+e[i]>=minc)
					{
						if (min>j+c[i])
						{
							min = j+c[i];
						}
					}
				}
				else
				{
					if (best[j]+e[i]>best[j+c[i]])
					{
						best[j+c[i]] = best[j] + e[i];
					}
				}
			}
		}
	}
	
	for (i=1;i<=minc;i++)
	{
		if (best[i] >= minc)
		{
			min = i;
			break;
		}
	}
	if (min ==  99999999)
	{
		printf("-1");
	}
	else
	{
		printf("%d",min);
	}

	return 0;
}