대회 개최

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

요약
N개의 알고리즘마다 문제 하나씩 골라 순서를 정할 때 인접한 난이도 차의 합의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
정렬, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

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

또한 용범이는 문제의 난이도가 급격하게 상승하는 것을 방지하기 위해, 난이도 커브를 최소화하고자 한다. 난이도 커브는 대회의 ii번 문제의 난이도를 x_ix\_i라 할 때 ∣x_1−x_2∣+∣x_2−x_3∣+⋯+∣x_N−1−x_N∣\left\vert x\_1 - x\_2 \right\vert + \left\vert x\_2 - x\_3 \right\vert + \cdots + \left\vert x\_{N-1} - x\_N \right\vert라고 정의한다. 단, 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번째 문제의 난이도를 의미하는 정수 d_i1,⋯ ,d_iKd\_{i1},\cdots,d\_{iK}가 공백으로 구분되어 주어진다. (1≤d_ij≤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