Cod sursa(job #330143)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 8 iulie 2009 22:10:15
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>

#define file_in "planeta.in"
#define file_out "planeta.out"

#define Nmax 33

int n;
long long C[Nmax],k,x,t;

void solve(int ls, int ld, long long val)
{
	int i;
	if (ls>ld)
		return ; 
    if (ls==ld)
	{
		printf("%d ", ls);
		return ;
	}
	
	for (i=ls;i<=ld;++i)
		 if (x+C[i-ls]*C[ld-i]*val<k)
			 x+=C[i-ls]*C[ld-i]*val;
		 else
			 break;
	printf("%d ", i);
	solve(ls,i-1,val*C[ld-i]);
	solve(i+1,ld,val);
}
	
int main()
{
	int i,j;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %lld", &n,&k);
	
	//catalan
	C[0]=1;
	for (i=1;i<=n;++i)
	{
		t=0;
		for (j=0;j<i;++j)
			t+=C[j]*C[i-1-j];
		C[i]=t;
	}
	
	/*for (i=1;i<=n;++i)
		 printf("%d ", C[i]);*/
	solve(1,n,1);
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}