만드는 중입니다

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

순열 복원

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

요약
순열의 각 접두사에 증가하는 부분수열 개수 Q_i가 주어졌을 때, 원래 순열 P를 복원합니다.
난이도

보통10점 중 7점

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

문제

Ghiţă는 경쟁 프로그래밍을 아주 좋아한다. 그는 순열을 가지고 노는 일과 아내 Ana와 시간을 보내는 일을 즐긴다. 결혼 10주년에 Ana가 그에게 아주 아름다운 순열을 선물했다. 모든 jj (1≤j≤N1 \le j \le N)에 대해 PjP_j를 순열의 jj번째 원소라고 하자.

Ghiţă는 신이 나서 모든 ii (1≤i≤N1 \le i \le N)에 대해 QiQ_i를 계산했다. QiQ_i는 순열의 길이 ii인 앞부분에 있는 증가 부분 수열의 개수이다. 정확히는, 1≤j1<j2<…<jk≤i1 \le j_1 < j_2 < \ldots < j_k \le i이고 Pj1<Pj2<…<PjkP_{j_1} < P_{j_2} < \ldots < P_{j_k}를 만족하는 정수 배열 j1,j2,…,jkj_1, j_2, \ldots, j_k의 개수이다.

Ghiţă는 Q를 P 옆에 저장해 두었다. 이후 Lică Sămădăul이 순열을 훔쳐 갔고, Ghiţă에게는 배열 Q만 남았다. Q로부터 P를 복원하도록 도와라.

입력

첫 줄에 순열의 길이 NN이 주어진다. 둘째 줄에는 공백으로 구분된 Q1,Q2,…,QNQ_1, Q_2, \ldots, Q_N이 주어진다.

출력

한 줄에 배열 P를 공백으로 구분해 출력한다.

제한

  • 주어진 Q를 만드는 순열 P는 정확히 하나뿐임이 보장된다.
  • N≤70 000N \le 70\,000.
  • 입력 크기는 111 MB 미만이다.
  • 입력을 읽는 부분의 실행 시간과 메모리 사용량을 따로 확인하라. 입력 읽기는 이 문제의 어려운 부분이 아니지만, 입력 처리가 느리면 풀이가 비효율적으로 보일 수 있다.

힌트

첫 번째 예제에서 N=4N = 4이고 P={3,2,4,1}P = \{3, 2, 4, 1\}이다.

  • Q1=1Q_1 = 1이다. {3}\{3\}이 {3}\{3\}의 유일한 증가 부분 수열이다.
  • Q2=2Q_2 = 2이다. {3}\{3\}과 {2}\{2\}가 {3,2}\{3, 2\}의 유일한 증가 부분 수열이다.
  • Q3=5Q_3 = 5이다. {3}\{3\}, {3,4}\{3, 4\}, {2}\{2\}, {2,4}\{2, 4\}, {4}\{4\}가 {3,2,4}\{3, 2, 4\}의 유일한 증가 부분 수열이다.
  • Q4=6Q_4 = 6이다. {3}\{3\}, {3,4}\{3, 4\}, {2}\{2\}, {2,4}\{2, 4\}, {4}\{4\}, {1}\{1\}이 {3,2,4,1}\{3, 2, 4, 1\}의 유일한 증가 부분 수열이다.

예제2

  1. 예제 1

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

    입력
    6
    1 3 5 9 11 21
    
    예상 출력
    1 6 3 4 2 5