Cod sursa(job #19852)

Utilizator DorinOltean Dorin Dorin Data 20 februarie 2007 08:28:12
Problema Ghiozdan Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <stdio.h>

# define input "ghiozdan.in"
# define output "ghiozdan.out"

# define max 75019

long n,a[max],nr[max],g,i,j,ant[max],x,m,val;

int main()
{
	freopen(input,"r",stdin);
	freopen(output,"w",stdout);

	scanf("%ld%ld",&n,&g);

	a[0] = 1;
	m = 0;

	for(i = 1;i<=n;i++)
	{
		scanf("%ld",&x);
		for(j = m;j>=0;j--)
		{
			if(a[j] && j+x<=g)
			{
				if(j+x>m)
					m  = j+x;
				if(!a[j+x])
				{
					a[j+x] = 1;
					ant[j+x] = j;
					nr[j+x] = nr[j]+1;
				}
				else
					if(nr[j+x]>nr[j]+1)
					{
						ant[j+x] = j;
						nr[j+x] = nr[j]+1;
					}


			}
		}
	}
	i = g;
//	for(i=g;a[i]==0;i--);
	printf("%ld %ld\n",i,nr[i]);
	val = nr[i];
/*	while(i)
	{
		printf("%ld\n",i-ant[i]);
		i = ant[i];
		--val;
	}
	while(val)
	{
		printf("0\n");
		--val;
	}
*/
    return 0;
}