만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

순열 문제

면접 대비

시간 제한2초메모리 제한1024 MB

요약
n과 k가 주어질 때, 1과 2가 서로 이웃하지 않는 1부터 n까지의 순열 중 사전순으로 k번째 순열을 구합니다.
난이도

보통10점 중 5점

유형
조합론, 백트래킹
정답자
아직 제출이 없습니다

문제

1부터 nn까지의 수로 이루어진 순열은 각 수가 정확히 한 번씩 나타나는 수열 p1,…,pnp_1, \ldots, p_n이다.

순열 P=p1p2…pnP=p_1 p_2 \ldots p_n이 순열 Q=q1q2…qnQ = q_1 q_2 \ldots q_n보다 사전순으로 앞서는 것은, 어떤 kk에 대해 모든 1≤t≤k1 \le t \le k에서 pt=qtp_t = q_t이고 pk+1<qk+1p_{k+1} < q_{k+1}인 것을 뜻한다.

1부터 nn까지의 수로 된 순열 중 수 11과 22가 서로 인접한 자리에 놓이지 않은 순열을 모두 모은다. 이것들을 사전순으로 정렬했을 때 kk번째에 오는 순열을 구하라.

입력

첫 줄에 자연수 nn과 kk가 주어진다 (1≤n≤91 \le n \le 9, 1≤k≤n!1 \le k \le n!). 이 번호의 순열이 존재함이 보장된다.

출력

답이 되는 순열을 출력한다.

예제2

  1. 예제 1

    입력
    3 1
    
    예상 출력
    1 3 2
    
  2. 예제 2

    입력
    4 6
    
    예상 출력
    2 3 4 1