뱀

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

요약
수열을 K+1개의 연속 구간으로 나누고 각 구간의 그물 크기를 그 구간 최댓값으로 정할 때, 구간 최댓값의 합에서 전체 뱀 수의 합을 뺀 값을 최소로 만든다.
난이도

보통10점 중 6점

유형
동적 계획법, 배열, 그리디, 분할 정복
정답자
아직 제출이 없습니다

문제

전설에 따르면 천 년도 더 전에 성 패트릭이 물랜드의 뱀을 모두 쫓아냈다고 한다. 하지만 그동안 뱀들이 다시 물랜드로 돌아왔다! 성 패트릭의 날은 3월 17일이므로, 베시는 성 패트릭을 기념해 물랜드의 뱀을 완전히 몰아내려 한다.

베시는 직선 위에 NN개의 그룹으로 나뉘어 있는 뱀을 잡을 그물을 가지고 있다 (1≤N≤400)(1 \leq N \leq 400). 베시는 직선에 나타난 순서대로 모든 그룹의 모든 뱀을 잡아야 한다. 그룹 하나를 잡을 때마다 뱀을 우리에 넣고, 다음 그룹을 위해 빈 그물로 시작할 수 있다.

크기 ss인 그물로는 뱀이 gg마리 들어 있는 그룹을 잡을 수 있다. 단, g≤sg \leq s여야 한다. 다만 베시가 크기 ss인 그물로 크기 gg인 뱀 그룹을 잡을 때마다 s−gs - g만큼의 공간이 낭비된다. 베시의 그물은 어떤 크기로든 시작할 수 있고, 그물의 크기를 KK번 바꿀 수 있다 (1≤K<N)(1 \leq K < N).

모든 그룹을 잡은 뒤 누적되는 낭비된 공간의 총량의 최솟값을 베시에게 알려주자.

입력

첫째 줄에 NN과 KK가 주어진다. 둘째 줄에 NN개의 정수 a_1,…,a_Na\_1,\dots,a\_N이 주어지며, a_ia\_i (0≤a_i≤1060 \leq a\_i \leq 10^6)는 ii번째 그룹에 있는 뱀의 수이다.

출력

베시가 모든 뱀을 잡은 뒤 낭비된 공간의 최솟값을 정수 하나로 출력한다.

힌트

베시의 그물은 크기 7로 시작한다. 첫 번째 뱀 그룹을 잡은 뒤 그물 크기를 9로 바꾸고, 네 번째 뱀 그룹에 이르기까지 그 크기를 유지하다가 그물 크기를 3으로 바꾼다. 낭비된 공간의 총량은 (7−7)+(9−9)+(9−8)+(3−2)+(3−3)+(3−2)=3(7-7) + (9-9) + (9-8) + (3-2) + (3-3) + (3-2) = 3이다.

예제1

  1. 예제 1

    입력
    6 2
    7 9 8 2 3 2
    
    예상 출력
    3