만드는 중입니다

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

대회 개최

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

요약
각 그룹에서 난이도를 하나씩 골라 순서를 정할 때, 인접한 난이도 차이의 합을 최소로 만드는 값을 구합니다.
난이도

보통10점 중 7점

유형
투 포인터, 슬라이딩 윈도우, 정렬
정답자
아직 제출이 없습니다

문제

용범이는 보라매컵에 문제를 출제하기 위해 서로 다른 NN가지 종류의 알고리즘 문제를 각각 KK개씩, 총 N×KN \times K개 만들었다. ii번째 알고리즘의 jj번째 문제의 난이도는 dijd_{ij}이다. 그러나 만든 문제를 모두 낼 만큼 대회 시간이 부족해서, 서로 다른 NN개의 알고리즘마다 문제를 하나씩, 총 NN개만 내려고 한다.

또한 용범이는 문제의 난이도가 급격하게 오르는 것을 막기 위해 난이도 커브를 최소화하려고 한다. 대회의 ii번 문제의 난이도를 xix_i라 할 때, 난이도 커브는 ∣x1−x2∣+∣x2−x3∣+⋯+∣xN−1−xN∣|x_1 - x_2| + |x_2 - x_3| + \cdots + |x_{N-1} - x_N|로 정의한다. 단, N=1N = 1일 때의 난이도 커브는 00으로 정의한다.

용범이를 도와, NN개의 문제를 적절한 순서로 배치했을 때 난이도 커브의 최솟값을 구하자.

입력

첫 번째 줄에 알고리즘의 개수 NN과 알고리즘마다 만든 문제 개수 KK가 공백으로 구분되어 주어진다. (1≤N,K≤1 000)(1 \le N, K \le 1\,000)

이후 NN개의 줄에 걸쳐, i+1i+1번째 줄에 ii번째 알고리즘의 jj번째 문제의 난이도를 나타내는 정수 di1,⋯ ,diKd_{i1}, \cdots, d_{iK}가 공백으로 구분되어 주어진다. (1≤dij≤100 000)(1 \le d_{ij} \le 100\,000)

출력

NN개의 문제를 적절히 배치했을 때 난이도 커브의 최솟값을 출력한다.

예제1

  1. 예제 1

    입력
    3 3
    7 2 3
    6 9 5
    1 4 3
    
    예상 출력
    2