Cod sursa(job #609631)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 22 august 2011 15:27:29
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb

#include <cstdio>
#include <fstream>

using namespace std;

int c[201],s[75000],t[75000],n,ss,g,i,j,k,mx,x;

int main ()
{
	
	ifstream f ("ghiozdan.in");
	freopen ("ghiozdan.out","w",stdout);
	f>>n>>g;
	for(i=1;i<=n;++i){
		f>>x;
		++c[x];
		if(x>mx)
			mx=x;}
	s[0]=1;
	ss=0;
	for(i=mx;i;--i)
		if(c[i])
			for(j=g-i;j>=0;--j)
				if(s[j])
					for(k=1;k<=c[i]&&j+k*i<=g&&!s[j+k*i];++k){
						s[j+i*k]=s[j+(k-1)*i]+1;
						t[j+k*i]=i;
						if(j+k*i>ss)
							ss=j+k*i;
						}
	--s[ss];
	printf("%d %d\n",ss,s[ss]);
	for(i=ss;i;i-=t[i])
		printf("%d\n",t[i]);
	
	return 0;}