F - 天秤とコイン (Balance and Coins) Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点: 100

この問題は入力ファイルのサイズが大きく,低速な言語で満点を得るのは難しいので注意せよ.

問題

天秤の左側の皿に N 枚のコインが縦に積まれており,上から順にコイン 1, コイン 2 , \cdots, コイン N と呼ぶことにする.これらのコインは酸化などによって毎日質量が変化する.i 日目のコイン j の質量は M_{i,j} である.

あなたは D 日間にわたって毎日以下の遊びをする.

  • 天秤の左側の皿に積まれているコインを上から好きな枚数だけ右側の皿に移動する.1 枚も移動させなくても構わない.
  • 天秤を釣り合わせるのに必要な分銅の質量を G とする.G は左右の皿に積まれているコインの合計質量の差の絶対値である.
  • あなたはコスト G を払う.

D 日間にわたって払う必要のある合計コストの最小値を求めるプログラムを作成せよ.

制約

  • 1 \leq N \leq 2\,000
  • 1 \leq D \leq 2\,000
  • 1 \leq M_{i,j} \leq 1\,000\,000\,000 (1 \leq i \leq D, 1 \leq j \leq N)

小課題

  1. (8 点) N = 2
  2. (8 点) N = 3
  3. (14 点) N \leq 10D \leq 10
  4. (24 点) N \leq 200D \leq 200
  5. (46 点) 追加の制約はない.

入力

入力は以下の形式で標準入力から与えられる.

N D
M_{1,1} M_{1,2} ... M_{1,N}
M_{2,1} M_{2,2} ... M_{2,N}
\vdots
M_{D,1} M_{D,2} ... M_{D,N}

出力

標準出力に,D 日間にわたって払う必要のある合計コストの最小値を 1 行で出力せよ.


入力例 1

3 4
10 8 3
5 7 8
9 6 1
2 8 9

出力例 1

14

以下のように操作を行うと,払う合計コストは 14 となり,このときが最小である. また,この入力例は小課題 2, 3, 4, 5 の制約を満たす.

  • 1 日目にはコインを 1 枚移動する.払うコストは |10 - (8+3)| = 1 である.
  • 2 日目にはコインを 1 枚も移動しない.払うコストは |5 - (7+8)| = 10 である.
  • 3 日目にはコインを 1 枚も移動しない.払うコストは |9 - (6+1)| = 2 である.
  • 4 日目にはコインを 1 枚移動する.払うコストは |(2+8) - 9| = 1 である.

入力例 2

10 8
50 8 226 426 123 30 114 304 230 994
402 230 316 555 193 95 547 66 171 1000
399 30 24 177 97 325 315 1 361 993
606 973 94 32 391 116 64 782 784 631
759 1000 130 503 81 538 260 41 71 118
1000 148 223 149 113 1 110 366 56 113
1000 245 104 383 171 27 244 34 204 121
55 1000 32 151 59 44 270 386 36 104

出力例 2

6733

この入力例は小課題 3, 4, 5 の制約を満たす.


入力例 3

1 10
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000

出力例 3

10000000000

この入力例は小課題 3, 4, 5 の制約を満たす. 出力が 32 ビット整数型に収まらない場合があることに注意せよ.