만드는 중입니다

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

이진 트리에서의 중앙값

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

요약
무게가 모두 다른 힙 모양 이진 트리에서, 각 a에 대해 부분트리를 무게순으로 정렬했을 때 floor((k-a+1)/2)번째 원소인 a-중앙값의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

Yuuka에게는 정점이 1,2,…,n1, 2, \dots, n으로 편리하게 번호가 매겨진 이진 트리가 있다. 각 i≥2i \geq 2에 대해 정점 ii와 ⌊i/2⌋\lfloor i / 2 \rfloor 사이에 간선이 있다. ii번째 정점에는 가중치 wiw_i가 있으며, 모든 가중치는 서로 다르다.

주어진 트리의 부분 트리(그 자체가 트리인 부분 그래프) 중 정점 v1,v2,…,vkv_1, v_2, \dots, v_k로 이루어지고 wv1<wv2<⋯<wvkw_{v_1} < w_{v_2} < \dots < w_{v_k}를 만족하는 것을 생각하자. 이 부분 트리의 aa-중앙값은 0≤a<k0 \leq a < k에 대해 wv⌊(k−a+1)/2⌋w_{v_{\lfloor (k - a + 1) / 2 \rfloor}}이다.

각 a∈{0,1,2,…,n−1}a \in \{0, 1, 2, \dots, n - 1\}에 대해, 주어진 트리의 모든 부분 트리 중에서 가장 큰 aa-중앙값을 구하라.

입력

입력은 0개 이상의 테스트 케이스로 이루어지며, 파일의 끝에서 종료된다. 각 테스트 케이스는 다음과 같다.

첫째 줄에 정수 nn이 주어진다 (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5).

둘째 줄에 nn개의 정수 w1,w2,…,wnw_1, w_2, \dots, w_n이 주어진다 (1≤wi≤n1 \leq w_i \leq n, 그리고 w1,w2,…,wnw_1, w_2, \dots, w_n은 모두 서로 다르다). 모든 nn의 합은 2⋅1052 \cdot 10^5을 넘지 않음이 보장된다.

출력

각 테스트 케이스에 대해 nn개의 정수 M0,M1,…,Mn−1M_0, M_1, \dots, M_{n - 1}를 출력한다. 여기서 MaM_a는 가장 큰 aa-중앙값을 나타낸다.

예제1

  1. 예제 1

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