만드는 중입니다

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

중앙값

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

요약
주어진 수열을 재배열하여 각 접두사의 중앙값이 감소하지 않는 순열 중 사전순으로 가장 큰 것을 구합니다.
난이도

보통10점 중 6점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n이 좋은 수열이라는 것은 m1≤m2≤⋯≤mnm_1 \leq m_2 \leq \dots \leq m_n을 만족한다는 뜻입니다. 여기서 mim_i는 a1,a2,…,aia_1, a_2, \ldots, a_i의 중앙값입니다.

수열 p1,p2,…,pnp_1, p_2, \dots, p_n이 주어집니다. 이 수열을 재배열한 것 중 좋은 수열인 것을 하나 구하세요. 그런 재배열이 여러 개이면 사전순으로 가장 큰 것을 출력합니다.

수열 a1,a2,…,aka_1, a_2, \ldots, a_k의 중앙값은 kk가 홀수이면 큰 쪽에서 ⌈k/2⌉\lceil k/2 \rceil번째 원소입니다. kk가 짝수이면 큰 쪽에서 k/2k/2번째 원소와 (k/2+1)(k/2+1)번째 원소의 평균입니다.

입력

첫째 줄에 정수 nn (1≤n≤1051 \leq n \leq 10^5)이 주어집니다.

둘째 줄에 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n (1≤pi≤1091 \leq p_i \leq 10^9)이 nn개 주어집니다.

출력

첫째 줄에 주어진 수열을 재배열한 것 중 사전순으로 가장 큰 좋은 수열을 nn개의 정수로 출력합니다.

예제2

  1. 예제 1

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

    입력
    8
    1 2 2 3 3 3 4 4
    
    예상 출력
    3 3 4 3 4 2 2 1