만드는 중입니다

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

중앙값 산맥

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

요약
각 내부 봉우리의 높이를 자신과 양옆 봉우리의 중앙값으로 바꾸는 과정을 반복하고, 높이가 더 이상 변하지 않을 때까지의 횟수를 구합니다.
난이도

어려움10점 중 8점

유형
배열, 그리디, 구현
정답자
아직 제출이 없습니다

문제

베르란드는 지형이 다양한 큰 나라이다. 이 나라에서 가장 유명한 자연 명소 가운데 하나가 '중앙값 산맥'이다. 이 산맥은 한 직선 위에 놓인 nn개의 산봉우리로 이루어져 있으며, 왼쪽부터 1번에서 nn번까지 차례로 번호가 붙어 있다. ii번째 산봉우리의 높이는 aia_i이다.

이 산맥에서는 매일 산봉우리 정렬이 일어난다. 정렬 순간에 2번부터 n−1n-1번까지 모든 산봉우리의 높이가 동시에 바뀐다. 정렬 전 높이가 bib_i라고 하면, 새 높이 aia_i는 다음과 같다. a1=b1a_1 = b_1, an=bna_n = b_n이고, 2 이상 n−1n-1 이하의 모든 ii에 대해 aia_i는 median(bi−1,bi,bi+1)(b_{i-1}, b_i, b_{i+1})이다. 세 정수의 중앙값은 그 가운데 두 번째로 큰 수이다. 예를 들어 median(5,1,2)=2(5,1,2) = 2이고 median(4,2,4)=4(4,2,4) = 4이다.

베르란드 과학자들은 초기 높이가 어떤 값이든 정렬 과정이 조만간 안정된다는 것을 증명했다. 즉 어느 시점부터는 정렬을 해도 높이가 더 이상 바뀌지 않는다. 정부는 이 과정이 얼마나 빨리 끝나는지 알고 싶어 한다. 높이를 하나 이상 바꾸는 정렬이 몇 번 일어나는지, 곧 cc의 값을 구하라.

일부 테스트 그룹에서는 cc와 함께 cc번의 정렬을 마친 뒤 산봉우리의 높이, 즉 이후 영원히 유지되는 높이도 구해야 한다.

입력

첫째 줄에 정수 nn과 tt (1≤n≤500 0001 \le n \le 500\,000, 0≤t≤10 \le t \le 1)가 주어진다. nn은 산봉우리의 개수이고, tt는 최종 높이를 출력해야 하는지를 나타낸다.

둘째 줄에 정수 a1,a2,a3,…,ana_1, a_2, a_3, \ldots, a_n (1≤ai≤1091 \le a_i \le 10^9)이 주어진다. 이는 산봉우리의 현재 높이이다.

출력

첫째 줄에 높이를 하나 이상 바꾸는 정렬의 횟수 cc를 출력한다.

t=1t = 1이면 둘째 줄에 cc번의 정렬을 마친 뒤 nn개 산봉우리의 최종 높이를 출력한다.

힌트

첫 번째 예시에서 1번과 5번 산봉우리의 높이는 전혀 바뀌지 않는다. median(1,2,1)=1(1, 2, 1) = 1이므로 첫 정렬 후 2번과 4번 산봉우리의 높이는 모두 1이 된다. median(2,1,2)=2(2, 1, 2) = 2이므로 3번 산봉우리의 높이는 2가 된다. 따라서 첫 정렬 후 높이는 1, 1, 2, 1, 1이다. 두 번째 정렬 후에는 모두 1이 되고, 이후로는 변하지 않는다. 그러므로 높이를 바꾸는 정렬은 2번뿐이다.

세 번째 예시에서는 정렬을 해도 어떤 높이도 바뀌지 않으므로 횟수는 0이다. t=0t = 0이므로 최종 높이는 출력하지 않는다.

예제3

  1. 예제 1

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

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

    입력
    6 0
    1 1 2 2 1 1
    
    예상 출력
    0