#ATarc135d. [ARC135D] Add to Square

[ARC135D] Add to Square

题目描述

有一个 H×WH \times W 的网格,每个格子中写有一个整数。对于 1iH1 \leq i \leq H1jW1 \leq j \leq W,第 ii 行第 jj 列的格子中写的整数记作 Ai,jA_{i,j}

你可以进行如下操作任意次(也可以一次都不做):

  • 选择满足 1iH11 \leq i \leq H-11jW11 \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}| 的值,以及此时网格的状态。

输入格式

输入按以下格式从标准输入读入。

HH WW
A1,1A_{1,1} A1,2A_{1,2} \ldots A1,WA_{1,W}
\vdots
AH,1A_{H,1} AH,2A_{H,2} \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} A1,2A_{1,2} \ldots A1,WA_{1,W}
\vdots
AH,1A_{H,1} AH,2A_{H,2} \ldots AH,WA_{H,W}

如果存在多个满足条件的网格状态,输出任意一个都可以。

样例 1

输入

2 3
1 2 3
4 5 6

输出

9
0 -3 -1
3 0 2

样例 2

输入

2 2
1000000000 -1000000000
-1000000000 1000000000

输出

4000000000
2000000000 0
0 2000000000

样例 3

输入

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

说明/提示

限制

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

样例解释 1

例如,按如下方式操作,可以得到输出样例中的网格状态:

  • (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

允许进行使 Ai,j>109|A_{i,j}| > 10^9 的操作。

由 ChatGPT 4.1 翻译