Cod sursa(job #261975)

Utilizator marinMari n marin Data 18 februarie 2009 21:51:27
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define DIM 35

long long d[DIM];
long long n,k,i,j;


FILE *g = fopen("planeta.out","w");

void cautRad(long long left, long long right, long long k) {
  long long s,p,T;

  if (left>right)
    return;
  if (left==right) {
    fprintf(g,"%lld ",left);
    return;
  }
  s = 0;
  for (p=left;p<=right;p++)
    if (s+d[p-left]*d[right-p]<k)
      s+=(d[p-left]*d[right-p]);
    else break;
  if (p>right)
    p = right;
  T = k-s;
  fprintf(g,"%lld ",p);
  cautRad(left, p-1, (T-1)/d[right-p]+1);
  cautRad(p+1,right, (T-1)%d[right-p]+1);


}


int main(){
  FILE *f = fopen("planeta.in","r");
  fscanf(f,"%lld %lld",&n, &k);
  fclose(f);
  d[0]=1;
  for (i=1;i<=n;i++)
    for (j=1;j<=i;j++)
      d[i] += (d[j-1]*d[i-j]);
  cautRad(1,n,k);
  fclose(g);
  return 0;
}