천칭 저울

시간 제한1초메모리 제한512 MB

요약
1부터 n까지 무게추를 레벨 순서로 채워 좌우가 서로 대칭이고 무게 합이 같은 두 이진트리를 구성하거나 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
트리, 시뮬레이션, 수학, 조합론
정답자
아직 제출이 없습니다

문제

1부터 n까지 번호가 붙은 추가 각각 하나씩 있다. 각 추의 무게는 번호와 같다. 추는 그림처럼 양쪽에 다른 추를 매달 수 있는 모양이며, 다음 규칙을 모두 만족하도록 큰 천칭저울의 왼쪽과 오른쪽에 추를 배치해야 한다.

  1. 어떤 추를 기준으로 왼쪽에는 그 추보다 가벼운 추만, 오른쪽에는 그 추보다 무거운 추만 매달 수 있다.
  2. 큰 천칭저울의 왼쪽과 오른쪽에 만들어지는 두 모양은 가운데 기둥을 기준으로 서로 대칭이어야 한다. n이 홀수이면 추 하나는 사용하지 않는다.
  3. 깊이 d에 추를 매달 수 있는 경우는 깊이 d-1의 가능한 위치가 모두 채워진 뒤뿐이다. 따라서 사용하는 추들의 깊이가 최소가 되도록 채운다.
  4. 같은 깊이에서 새 추를 매달 때, 큰 저울의 왼쪽 모양은 왼쪽 위치부터, 오른쪽 모양은 오른쪽 위치부터 채운다.
  5. 모든 배치가 끝난 뒤 큰 천칭저울은 평형이어야 한다. 여기서는 양쪽에 매달린 추들의 무게 합이 같으면 평형이라고 한다.

조건을 만족하는 배치가 있으면 양쪽 모양을 각각 출력한다.

입력

첫 줄에 정수 n이 주어진다. (2 ≤ n ≤ 100,000)

출력

첫째 줄에 왼쪽 모양의 추 번호를, 둘째 줄에 오른쪽 모양의 추 번호를 출력한다. 각 모양을 루트가 있는 이진 트리로 보고 전위 순회한 순서를 공백으로 구분해 출력한다.

조건을 만족하는 배치가 없으면 첫째 줄에 -1만 출력한다.

힌트

예제1

  1. 예제 1

    입력
    9
    
    예상 출력
    8 2 1 9
    4 3 6 7