Cod sursa(job #430843)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 31 martie 2010 13:37:11
Problema Planeta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
FILE *f=fopen("planeta.in","r");
FILE *g=fopen("planeta.out","w");
int n,j,i;
long long k,c[31];
void rec(int p, int u,int k){
    int i,r;
    long long s=0,t1,t2;
   for(i=p;i<=u&&s<k;i++)
     s+=c[i-p]*c[u-i];
   r=i-1;
   s-=c[r-p]*c[u-r];
   k=k-s;
   t1=k/c[u-r]+1;
   
   if(k%c[u-r]!=0)
      t2=k%c[u-r];
   else{
	   t1--;
	   t2=c[u-r];
   }
   fprintf(g,"%d ",r);
   if(p<=r-1&&r>0)
	   rec(p,r-1,t1);
   if(r+1<=u)
	   rec(r+1,u,t2);
}
int main(){
	fscanf(f,"%d%lld",&n,&k);
c[0]=1;
c[1]=1;
for(i=2;i<=n;i++)
	for(j=0;j<i;j++)
		c[i]+=c[j]*c[i-1-j];
	
rec(1,n,k);
return 0;	
}