리스트 자르기

아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

정수 NN개로 이루어진 리스트 LL이 주어진다.

리스트 L={l1,l2,,lN}L = \{l_1, l_2, \ldots, l_N\}을 인덱스 ii에서 자르면 비어 있지 않은 두 조각 {l1,,li}\{l_1, \ldots, l_i\}{li+1,,lN}\{l_{i+1}, \ldots, l_N\}으로 나뉜다. 이렇게 잘라 나온 조각을 다시 자르는 식으로 모두 K1K - 1번 자르면 조각이 KK개 남고, 각 조각은 LL에서 연속한 원소로 이루어진다.

ii번째 조각의 최댓값을 MiM_i, 최솟값을 mim_i라 하고 di=Mimid_i = M_i - m_i로 정의한다.

ans=i=1Kdians = \sum_{i=1}^{K} d_i가 최소가 되도록 LL을 조각 KK개로 자르고, 그때의 ansans를 구하시오.

입력

첫째 줄에 테스트 케이스의 개수 TCTC가 주어진다 (1TC1201 \le TC \le 120).

각 테스트 케이스 앞에는 빈 줄이 하나 있다. 테스트 케이스의 첫째 줄에는 두 정수 NNKK가 주어진다 (1KN4001 \le K \le N \le 400). 둘째 줄에는 리스트 LL의 원소 NN개가 주어지며, 모두 10001000보다 작은 양의 정수다. LL의 원소가 서로 다르다는 보장은 없다.

출력

각 테스트 케이스마다 ansans를 한 줄에 출력한다.

힌트

L=8 1 5 4 7L = 8\ 1\ 5\ 4\ 7인 경우를 보자.

K=2K = 2{8}\{8\}{1,5,4,7}\{1, 5, 4, 7\}로 잘라 (88)+(71)=6(8 - 8) + (7 - 1) = 6이 된다. K=3K = 3이면 {8}\{8\}, {1}\{1\}, {5,4,7}\{5, 4, 7\}로 잘라 0+0+3=30 + 0 + 3 = 3이다. K=4K = 4{8}\{8\}, {1}\{1\}, {5,4}\{5, 4\}, {7}\{7\}로 잘라 0+0+1+0=10 + 0 + 1 + 0 = 1이다.

K=1K = 1이면 답은 리스트 전체의 최댓값에서 최솟값을 뺀 값이고, K=NK = N이면 조각마다 원소가 하나뿐이라 답은 00이다.