만드는 중입니다

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

K개의 블록

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

요약
수열을 정확히 K개의 연속 구간으로 나누어 각 구간 최댓값의 합을 가장 작게 만듭니다.
난이도

보통10점 중 7점

유형
동적 계획법, 스택, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

양의 정수 NN개로 이루어진 수열 AA가 주어진다. 이 수열을 정확히 KK개의 블록으로 나눈다. 블록은 연속한 원소로 이루어지고 비어 있지 않으며, 모든 원소는 정확히 한 블록에 속한다.

분할의 값은 KK개의 블록에서 각각 가장 큰 원소를 골라 모두 더한 값이다. 주어진 KK에 대해 분할의 값이 될 수 있는 최솟값을 구하라.

입력

첫째 줄에 두 정수 NN과 KK가 주어진다 (1≤K≤N≤20001 \le K \le N \le 2000).

둘째 줄에 수열의 원소 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다 (1≤Ai≤1061 \le A_i \le 10^6).

출력

KK개의 블록으로 나눈 분할의 값 중 최솟값을 한 줄에 출력한다.

예제6

  1. 예제 1

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

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

    입력
    1 1
    1000000
    
    예상 출력
    1000000
    
  4. 예제 4

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

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

    입력
    6 3
    7 7 7 7 7 7
    
    예상 출력
    21