Cod sursa(job #2210396)

Utilizator PetyAlexandru Peticaru Pety Data 6 iunie 2018 16:37:49
Problema Planeta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("planeta.in");
ofstream fout ("planeta.out");

int n, k; unsigned long long dp[32];

void f(int st, int dr, long long k) {
  if (st > dr)
    return;
  int nr = st;
  long long val = dp[nr - st] * dp[dr - nr];
  while (nr <= dr && val < k) {
    k -= val;
    nr++;
    if (nr <= dr) {val = dp[nr - st] * dp[dr - nr];}
  }
  fout << nr << " ";
  int ST, DR;
  ST = ceil((double)k / dp[dr - nr]);
  DR = ((k % dp[dr - nr])?k % dp[dr - nr]: dp[dr - nr]);
  f(st, nr - 1, ST);
  f(nr + 1, dr, DR);
}

int main()
{
  fin >> n >> k;
  dp[0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
      dp[i] += dp[j - 1] * dp[i - j];
  f(1, n, k);
  return 0;
}