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

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

피뢰침

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

요약
각 건물 i에 대해 모든 건물 j에서 h_i + p - sqrt(|i-j|) >= h_j를 만족하는 최소 정수 p를 구한다.
난이도

어려움10점 중 8점

유형
분할 정복, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

점점 심해지는 기후 변화 때문에 바이트버그(Byteburg) 시는 도시의 모든 건물을 보호할 수 있는 커다란 피뢰침 하나를 세우기로 했다. 건물들은 한 거리를 따라 일렬로 늘어서 있으며, 11번부터 nn번까지 번호가 매겨져 있다.

건물의 높이와 피뢰침의 높이는 모두 음이 아닌 정수이다. 예산 문제로 피뢰침은 단 하나만 세울 수 있고, 예상할 수 있듯이 피뢰침이 높을수록 비용이 더 많이 든다.

높이가 hih_i인 ii번 건물 위에 세운 높이 pp의 피뢰침이 높이가 hjh_j인 jj번 건물을 보호한다는 것은 다음 부등식이 성립함을 뜻한다.

hj≤hi+p−∣i−j∣h_j \le h_i + p - \sqrt{|i - j|}

여기서 ∣i−j∣|i - j|는 두 건물 번호 차이의 절댓값이다.

모든 건물 ii에 대하여, ii번 건물 위에 세웠을 때 도시의 모든 건물을 보호할 수 있는 피뢰침의 최소 높이를 구하라.

입력

첫째 줄에 건물의 개수 nn (1≤n≤500,0001 \le n \le 500{,}000)이 주어진다.

이어지는 nn개의 줄에는 각각 ii번 건물의 높이 hih_i (0≤hi≤1,000,0000 \le h_i \le 1{,}000{,}000)가 한 줄에 하나씩 주어진다.

출력

정확히 nn개의 줄을 출력한다. ii번째 줄에는 ii번 건물 위에 세워 모든 건물을 보호할 수 있는 피뢰침의 최소 높이 pip_i(음이 아닌 정수)를 출력한다.

예제1

  1. 예제 1

    입력
    6
    5
    3
    2
    4
    2
    4
    
    예상 출력
    2
    3
    5
    3
    5
    4