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

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

히스토그램

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

요약
높이가 H_i인 막대 N개로 된 히스토그램에서 서로 겹치지 않는 직사각형 최대 K개의 넓이 합 최댓값 f(1), f(2), f(3)을 구합니다.
난이도

어려움10점 중 8점

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

문제

밑변이 바닥에 평행한 직사각형 NN개가 바닥에 연속으로 붙어 있는 히스토그램을 생각해 보자. 각 직사각형의 너비는 1로 같고, 왼쪽에서 ii번째 직사각형의 높이는 정수 HiH_i이다.

아래 그림은 가능한 히스토그램의 한 예이다.

이 히스토그램 안에서 다음 조건을 모두 만족하는 직사각형을 KK개 이하로 고른다. 밑변은 바닥과 평행하고, 임의의 두 직사각형은 내부가 겹치지 않으며(꼭짓점이나 모서리에서 맞닿는 것은 허용), 각 변의 길이는 정수이다. 고른 직사각형 넓이의 합이 최대가 되게 하려 하며, 이 최댓값을 f(K)f(K)라고 하자.

f(1)f(1), f(2)f(2), f(3)f(3)을 구하는 프로그램을 작성하라.

제한

  • 1≤N≤500 0001 \le N \le 500\,000
  • 1≤Hi≤500 0001 \le H_i \le 500\,000 (1≤i≤N1 \le i \le N)

예제1

  1. 예제 1

    입력
    1
    1
    
    예상 출력
    1
    1
    1