Cod sursa(job #255511)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 februarie 2009 21:31:27
Problema Planeta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
#define tip unsigned long long
tip n,k,i,j,a[32][32],p,q,sol[32];
void readd(),calc_arb(),solve(),prints();
int main()
{
	readd();
	calc_arb();
	solve();
	prints();
	return 0;
}
void readd()
{
	freopen("planeta.in","r",stdin);
	freopen("planeta.out","w",stdout);
	scanf("%llu%llu",&n,&k);
}
void calc_arb()
{
	a[0][0]=1;
	for(i=1;i<32;i++)
	 { for(j=1;j<=i;j++)a[i][j]=a[j-1][j-1]*a[i-j][i-j];
	   for(j=1;j<=i;j++)a[i][j]+=a[i][j-1];
	 }
}
void solve()
{
	for(i=1,p=n;i<=n;i++,p--)
	{
		q=0;
		while(a[p][q+1]<k)q++;
		sol[i]=q+1;k-=a[p][q];
	}
	for(i=n-1;i>=1;i--)
		for(j=i+1;j<=n;j++)
			if(sol[j]>=sol[i])
				sol[j]++;
}
void prints()
{
	for(i=1;i<=n;i++)printf("%llu ",sol[i]);
}