아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

순열의 부호화

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

요약
수열 B가 1부터 n까지의 순열을 나타내는 코드인지 판별하고, 맞으면 그 순열을 출력하며 아니면 NIE를 출력한다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 이분 탐색, 구현, 수학
정답자
아직 제출이 없습니다

문제

11부터 nn까지의 수로 이루어진 모든 순열 A=(a1,…,an)A = (a_1, \dots, a_n)은 수열 B=(b1,…,bn)B = (b_1, \dots, b_n)으로 부호화할 수 있습니다. 여기서 bib_i는 j<ij < i이면서 aj>aia_j > a_i인 aja_j의 개수입니다 (i=1,…,ni = 1, \dots, n).

예를 들어 수열 B=(0,0,1,0,2,0,4)B = (0, 0, 1, 0, 2, 0, 4)는 순열 A=(1,5,2,6,4,7,3)A = (1, 5, 2, 6, 4, 7, 3)의 부호입니다.

다음을 수행하는 프로그램을 작성하세요.

  • 표준 입력에서 길이 nn과 수열 BB의 원소들을 순서대로 읽습니다.
  • 이 수열이 11부터 nn까지의 어떤 순열의 부호인지 판별합니다.
  • 부호라면 그 순열을 찾아 표준 출력에 출력합니다.
  • 그렇지 않으면 표준 출력에 NIE("아니오")라는 한 단어를 출력합니다.

입력

  • 표준 입력의 첫째 줄에는 양의 정수 n≤30000n \le 30000이 주어집니다. 이는 수열 BB의 원소 개수입니다.
  • 이어지는 nn개의 줄에는 각각 3000030000 이하의 음이 아닌 정수가 하나씩 주어집니다. 이는 수열 BB의 원소를 순서대로 나타냅니다.

출력

표준 출력에 다음을 출력합니다.

  • 입력으로 주어진 수열 BB를 부호로 갖는 순열 AA의 원소를, 한 줄에 하나씩 nn개의 줄에 걸쳐 출력합니다.
  • 수열 BB가 어떤 순열의 부호도 아니라면 NIE라는 한 단어를 출력합니다.

예제2

  1. 예제 1

    입력
    7
    0
    0
    1
    0
    2
    0
    4
    
    예상 출력
    1
    5
    2
    6
    4
    7
    3
    
  2. 예제 2

    입력
    4
    0
    2
    0
    0
    
    예상 출력
    NIE