atcoder#ARC135D. [ARC135D] Add to Square

[ARC135D] Add to Square

配点 : 700700

問題文

H×WH\times W のマス目があり、各マスに整数がひとつずつ書き込まれています。 1iH1\leq i\leq H, 1jW1\leq j\leq W に対して、ii 行目・jj 列目のマスに書き込まれている整数を Ai,jA_{i,j} で表します。

あなたは次の操作を、何度でも行うことができます(一度も行わなくてもよいです)。

  • 1iH11\leq i\leq H - 1 かつ 1jW11\leq j\leq W - 1 を満たす整数 i,ji, j を選ぶ。
  • 整数 xx をひとつ選ぶ。
  • Ai,jA_{i,j}, Ai,j+1A_{i,j+1}, Ai+1,jA_{i+1,j}, Ai+1,j+1A_{i+1,j+1}xx を加える。

操作後の i=1Hj=1WAi,j\sum_{i=1}^H \sum_{j=1}^W |A_{i,j}| が最小となるように操作を行うとき、操作後の i=1Hj=1WAi,j\sum_{i=1}^H \sum_{j=1}^W |A_{i,j}| の値および、そのときのマス目の状態を出力してください。

制約

  • 2H,W5002\leq H, W \leq 500
  • Ai,j109|A_{i,j}|\leq 10^9

入力

入力は以下の形式で標準入力から与えられます。

HH WW

A1,1A_{1,1} \ldots A1,WA_{1,W}

\vdots

AH,1A_{H,1} \ldots AH,WA_{H,W}

出力

H+1H + 1 行出力してください。 11 行目には、i=1Hj=1WAi,j\sum_{i=1}^H \sum_{j=1}^W |A_{i,j}| の値を出力してください。 22 行目から H+1H+1 行目には、マス目の状態を以下の形式で出力してください。

A1,1A_{1,1} \ldots A1,WA_{1,W}

\vdots

AH,1A_{H,1} \ldots AH,WA_{H,W}

条件を満たすマス目の状態が複数存在する場合は、どれを出力しても正解となります。

2 3
1 2 3
4 5 6
9
0 -3 -1
3 0 2

例えば次のように操作を行うと、出力例のマス目の状態になります。

  • (i,j,x)=(1,1,1)(i, j, x) = (1, 1, -1) として操作を行う。
  • (i,j,x)=(1,2,4)(i, j, x) = (1, 2, -4) として操作を行う。

このとき、$\sum_{i=1}^H \sum_{j=1}^W |A_{i,j}| = 0 + 3 + 1 + 3 + 0 + 2 = 9$ です。

2 2
1000000000 -1000000000
-1000000000 1000000000
4000000000
2000000000 0
0 2000000000

Ai,j>109|A_{i,j}| > 10^9 となるような操作も認められています。

3 4
0 2 0 -2
-3 -1 2 0
-3 -3 2 2
0
0 0 0 0
0 0 0 0
0 0 0 0