Cod sursa(job #93219)

Utilizator radamiRadu Patulescu radami Data 18 octombrie 2007 08:23:02
Problema Ghiozdan Scor 48
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>


long obj[20010],n,g,sum[75010];

int main ()
{
	long i,j;
	
	freopen ("ghiozdan.in","r",stdin);
	freopen ("ghiozdan.out","w",stdout);
	
	scanf ("%ld",&n);
	scanf ("%ld",&g);
	
	for (i = 1;i <= n; ++i)
		scanf("%ld",&obj[i]);
		
	
/*	for (i = 1; i <= n; ++i)
		printf("%ld ",obj[i]);
*/	
	for (i = 1;i <= g; ++i)
		sum[i] = 2000000000;
	sum[0] = 0;
	
	for (i = 1;i <= n; ++i)
		for (j = g;j >= 0; --j)
			if (sum[j] != 2000000000 && j+obj[i] <= g)
				if (sum[j + obj[i]] > sum[j] + 1)
					sum[j + obj[i]] = sum[j] + 1;
	
	int gasit = 0;
	i = g;
	while (!gasit)
	{
		if (sum[i] != 2000000000)
			gasit = 1;
		else
			i--;
	}
	
	printf ("%ld %ld",i,sum[i]);
	return 0;
}