Cod sursa(job #2210393)

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

using namespace std;

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

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

void f(int st, int dr, long long k) {
  if (st > dr)
    return;
  int nr = st;
  int val = dp[nr - st] * dp[dr - nr];
  while (nr <= dr && val < k) {
    k -= val;
    nr++;
    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 = 0; j <= i; j++)
      dp[i] += dp[j] * dp[i - j - 1];
  f(1, n, k);
  return 0;
}