만드는 중입니다

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

히스토그램 K개 빼기

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

요약
히스토그램의 막대 N개에서 K개를 지운 뒤 남은 막대로 만들 수 있는 가장 큰 직사각형 넓이를 K마다 구합니다.
난이도

보통10점 중 7점

유형
배열, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

레프에게서 수업을 넘겨받은 흑왕은 올해도 히스토그램에 포함되는 최대 넓이 직사각형 문제를 내려고 한다. 흑왕의 히스토그램은 높이가 H1,H2,⋯ ,HNH_1, H_2, \cdots, H_N인 기둥 NN개를 순서대로 이어 만든 것이다. 모든 기둥의 너비는 11이다.

올해는 다양한 난이도의 문제를 내기 위해 K=0,1,⋯ ,N−1K=0,1,\cdots,N-1 각각에 대해 기둥을 정확히 KK개 뺀 히스토그램으로 문제를 낸다. 흑왕은 넓이가 넓은 직사각형을 좋아하므로, 각 KK에 대해 기둥을 정확히 KK개 뺀 히스토그램 중 가장 넓은 직사각형을 포함할 수 있는 히스토그램을 골라 문제를 낸다.

  • 히스토그램에 포함되는 최대 직사각형은, 그 히스토그램에 완전히 들어가고 각 변이 좌표축에 평행한 직사각형 중 넓이가 가장 넓은 것이다.
  • 기둥을 뺀다는 것은, 남은 기둥들을 순서를 유지한 채 빈틈없이 이어 붙인다는 뜻이다.

예를 들어 기둥 높이가 순서대로 3,1,4,1,5,93,1,4,1,5,9인 히스토그램에서 2번째와 5번째 기둥을 빼면 남은 기둥 높이는 3,4,1,93,4,1,9가 된다.

흑왕의 히스토그램에서 정확히 KK개의 기둥을 빼서 만들 수 있는 모든 히스토그램에 대해, 포함되는 최대 직사각형 넓이의 최댓값을 f(K)f(K)라 하자. K=0,1,⋯ ,N−1K=0,1,\cdots,N-1에 대해 NN개의 f(K)f(K) 값을 모두 구하라.

입력

첫 번째 줄에 흑왕의 히스토그램을 이루는 기둥의 수 NN이 주어진다. (1≤N≤40001\leq N\leq 4000)

두 번째 줄에 각 기둥의 높이 H1,H2,…,HNH_1, H_2, \ldots, H_N이 공백으로 구분되어 주어진다. (1≤Hi≤1091\leq H_i\leq 10^9)

출력

NN개의 줄에 걸쳐, i+1i+1번째 줄에 f(i)f(i)의 값을 출력한다. (0≤i≤N−10\leq i\leq N-1)

예제2

  1. 예제 1

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

    입력
    7
    9 6 8 2 7 5 9
    
    예상 출력
    18
    30
    30
    28
    24
    18
    9