만드는 중입니다

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

안정 순열

시간 제한3초메모리 제한256 MB

요약
길이 n인 순열 가운데 역전 쌍 수가 전체 쌍의 절반인 것을 사전순으로 k번째에 찾고, 없으면 NO를 출력합니다.
난이도

어려움10점 중 8점

유형
조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

길이가 nn인 순열은 p1,p2,…,pnp_1, p_2, \ldots, p_n으로 이루어진 수열이며, 각 pi∈{1,2,…,n}p_i \in \{1, 2, \ldots, n\}이고 i≠ji \neq j이면 pi≠pjp_i \neq p_j이다. 위치 i<ji < j인 쌍 (pi,pj)(p_i, p_j)에서 pi>pjp_i > p_j이면 이 쌍을 역전이라고 한다. 순열을 뒤집어도 역전의 개수가 변하지 않으면 그 순열을 안정하다고 한다. 길이가 nn인 안정한 순열 중 사전순으로 kk번째인 것을 구하라.

입력

첫 줄에 두 정수 nn과 kk가 주어진다 (1≤n≤2500001 \le n \le 250000, 1≤k≤10181 \le k \le 10^{18}).

출력

그러한 순열이 존재하면 첫째 줄에 YES를, 둘째 줄에 nn개의 수 p1,…,pnp_1, \ldots, p_n을 출력한다. 존재하지 않으면 NO를 출력한다.

힌트

길이가 4인 안정한 순열은 여섯 개다: (1,4,3,2)(1, 4, 3, 2), (2,3,4,1)(2, 3, 4, 1), (2,4,1,3)(2, 4, 1, 3), (3,1,4,2)(3, 1, 4, 2), (3,2,1,4)(3, 2, 1, 4), (4,1,2,3)(4, 1, 2, 3).

예제2

  1. 예제 1

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

    입력
    4 57
    
    예상 출력
    NO