문제 보기 - K개의 묶음 (IZhO14_blocks)

시간 제한메모리 제한제출 횟수제출한 사람 수해결한 사람 수정답률
1000 ms256 MiB280048636875.72%

길이가 NN인 수열 AA가 주어집니다. 수열의 "분할 값"을 수열을 KK개의 묶음으로 분할했을 때 각 묶음의 최댓값들의 합으로 정의합시다. (각 묶음은 연속해야 합니다) KK가 주어질 때 최소한의 분할 값을 구하는 프로그램을 작성하세요.

입력 형식

첫 번째 줄에 두 개의 정수 NNKK가 주어집니다. 두 번째 줄에 NN개의 정수 A1,A2,,ANA_{1}, A_{2}, \cdots, A_{N} (1Ai1061 \le A_{i} \le 10^{6})가 주어집니다.

출력 형식

최소한의 분할 값을 출력합니다.

서브태스크

서브태스크 1 (14점)

  • 1N100,1Kmin(N,5).1 \le N \le 100, 1 \le K \le \min(N,5).

서브태스크 2 (18점)

  • 1N20,1Kmin(N,20).1 \le N \le 20, 1 \le K \le \min(N,20).

서브태스크 3 (21점)

  • 1N100,1Kmin(N,100).1 \le N \le 100, 1 \le K \le \min(N,100).

서브태스크 4 (47점)

  • 1N100000,1Kmin(N,100).1 \le N \le 100 000, 1 \le K \le \min(N,100).

예제

예제 1

입력

5 1
1 2 3 4 5

출력

5

예제 2

입력

5 2
1 2 3 4 5

출력

6