만드는 중입니다

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

히스토그램과 파란 직사각형

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

요약
히스토그램의 처음 j개 열만 놓고, 내부가 모두 파란 칸인 가장 큰 직사각형의 넓이를 j마다 구합니다.
난이도

어려움10점 중 9점

유형
스택, 동적 계획법, 기하
정답자
아직 제출이 없습니다

문제

길이가 nn인 정수 배열 aa를 생각하자. 모든 aia_i는 양의 정수이다. 이런 배열은 히스토그램으로 나타낼 수 있다. 히스토그램을 그리려면 ii를 0부터 n−1n-1까지 바꿔 가며, 꼭짓점이 (i,0)(i,0), (i,ai)(i,a_i), (i+1,ai)(i+1,a_i), (i+1,0)(i+1,0)인 파란색 직사각형을 각각 그린다.

꼭짓점이 모두 정수 점이고 변이 좌표축과 평행한 직사각형의 내부 점이 모두 파란색이면, 그 직사각형은 히스토그램에 덮여 있다고 한다.

1 이상 nn 이하의 각 jj에 대해, 주어진 히스토그램의 처음 jj개 열이 덮는 직사각형 넓이의 최댓값을 구하라.

입력

첫 줄에 정수 nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)이 주어진다. 이는 배열 aa의 길이이다. 둘째 줄에는 nn개의 정수가 주어지며, ii번째 정수는 aia_i이다 (1≤ai≤1071 \le a_i \le 10^7).

출력

nn개의 정수를 한 줄에 하나씩 출력한다. ii번째 정수는 주어진 히스토그램의 처음 ii개 열이 덮는 직사각형 넓이의 최댓값이다.

예제2

  1. 예제 1

    입력
    5
    1 7 2 3 9
    
    예상 출력
    1
    7
    7
    7
    9
    
  2. 예제 2

    입력
    5
    4 5 3 8 7
    
    예상 출력
    4
    8
    9
    12
    15