Cod sursa(job #810282)

Utilizator dariusdariusMarian Darius dariusdarius Data 10 noiembrie 2012 00:34:03
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<stdio.h>
using namespace std;
int n,g,ap[205],v[75005],t[75005];
int main() 
{
	freopen("ghiozdan.in","r",stdin);
	freopen("ghiozdan.out","w",stdout);
	int i,q,k,j;
	scanf("%d%d",&n,&g);
	for(i = 1; i<=n; ++i) 
	{
		scanf("%d\n",q);
		ap[q]++;
	}
	v[0]=1;
	for(i=200;i>=1;i--) 
		if(ap[i])
			for(j=g-i;j>=0;j--) 
				if(v[j])
					for(k=1;k<=ap[i] && !v[j+k*i] && j+k*i<=g;k++)
					{				
					v[j+k*i]=v[j]+k;
					t[j+k*i]=i;
					}
	for(i=g;!v[i];--i);
	printf("%d %d\n",i,v[i-1]);
	for(; i!=0; i -= t[i])
		printf("%d\n",t[i]);
	return 0;
}