대안 순열
시간 제한8초메모리 제한256 MB
주어진 k에 대해 정확히 k개의 순열로 만들어지는 BST가 있는 가장 작은 n을 찾고, 사전순으로 가장 작은 순열을 출력합니다.
문제
Johnny는 순열을 이진 탐색 트리(BST)로 바꾸는 변환기를 작성했다. 순열 이 주어지면 을 루트에 놓는다. 가운데 보다 작은 수들은 원래 순서를 유지한 채 재귀적으로 BST를 만들고, 이를 루트의 왼쪽 서브트리로 붙인다. 대칭적으로, 보다 큰 수들로 BST를 만들어 오른쪽 서브트리로 붙인다. Johnny는 놀랍게도 서로 다른 순열이 같은 BST를 만들 수 있다는 사실을 발견했다. 예를 들어 과 은 같은 BST를 만든다. 이 사실에 놀란 그는 Johnny's Numbers 를 정의했다. 번째 Johnny's Number 는 의 순열 정확히 개로부터 얻을 수 있는, 레이블이 인 개 노드의 BST가 존재하는 가장 작은 이다. Johnny's Numbers를 연구하기는 어렵고, 이에 대한 관심도 줄고 있다. 주어진 에 대해 를 계산하도록 Johnny를 도와라.
입력
첫 줄에 자연수 ()가 주어진다.
출력
첫 줄에 양의 정수 를 출력한다. 단, 가 존재하고 이하일 때만 출력한다. 둘째 줄에는 개의 생성 순열 가운데 사전순으로 가장 작은 것을 이루는 개의 정수를 출력한다. 그렇지 않으면, 즉 가 존재하지 않거나 보다 크면 NIE를 출력한다. (NIE는 폴란드어로 '아니오'라는 뜻이다.)
힌트
생성 순열이 정확히 여덟 개인 트리는 아래 그림과 같다:
이 트리를 생성하는 순열은 모두 다음과 같다: , , , , , , , .