TopCoder

餘切
$\huge\text{owoovo is 8}$

User's AC Ratio

93.6% (44/47)

Submission's AC Ratio

73.2% (142/194)

Tags

Description

為了慶祝你終於在 APCS 測驗中拿下實作題滿分的佳績,你決定買一個大蛋糕來與眾人分享你的喜悅。

大蛋糕由 $N$ 行 $M$ 列的正方體小蛋糕拼湊而成,對於其第 $i$ 行第 $j$ 列的小蛋糕,你認為他的好吃程度為 $d_{i,j}$。在切蛋糕時,為了不破壞蛋糕的美觀,你會選擇相鄰兩列或相鄰兩行小蛋糕之間的交界處,並將完整的整行或整列切開。

舉例來說,下圖以紅線表示切蛋糕的位置。左側的兩張圖是合法的切蛋糕方式,但最右側的圖不是。

在切完蛋糕後,你會將每一塊蛋糕裝在一個盤子上,好分送給其他人。你想要最大化每一塊蛋糕從外側能看到的部分的好吃程度的總和。也就是說,每一塊切下來的蛋糕都有正上方及前、後、左、右五個看得到的面,你想將所有切塊的蛋糕的這些好吃程度相加,並最大化這個值。

舉例來說,下圖方格上的數字表示其好吃程度。若依紅線方式切大蛋糕,並將左上角的蛋糕裝在盤子上後,其外觀分別如下。這塊蛋糕的好吃程度總和為 $21+10+11+6+8 = 56$。而另外三塊蛋糕的好吃程度總和分別為 $52, 37, 50$,故以這種方式切蛋糕你可以得到的外側的好吃程度總和為 $56+52+37+50 = 195$。

因為你還不知道會有多少人要來一起分享,你想知道對於每一個介於 $[1,N \times M]$ 的正整數 $K$,切出恰好 $K$ 塊蛋糕的好吃程度總和最大可以是多少,或是判斷不存在合法的方式切出恰好 $K$ 塊蛋糕。相信這樣的問題對已經在 APCS 實作題拿下滿分的你來說一定是一塊小蛋糕。

Input Format

第一行包含兩個正整數 $N,M$,表示大蛋糕的大小。

接下來 $N$ 行,第 $i$ 行包含 $M$ 個正整數 $d_{i,1}, d_{i,2}, \ldots, d_{i,M}$,表示小蛋糕的好吃程度

  • $1 \le N \times M \le 10^ 6$
  • $1 \le d_{i,j} \le 200$

Output Format

輸出一行,包含 $N \times M$ 個整數,對於第 $i$ 個整數,若不存在切出恰好 $i$ 塊蛋糕的方式,請輸出 $-1$;否則請輸出切出恰好 $i$ 塊蛋糕的好吃程度總和最大可以是多少。

Sample Input 1

4 6
2 3 5 1 5 5
4 4 3 5 1 1
2 3 2 2 1 3
3 2 2 5 3 4

Sample Output 1

135 174 206 237 230 253 -1 262 255 269 -1 292 -1 -1 301 309 -1 324 -1 332 -1 -1 -1 355

Sample Input 2

3 2
1 2
3 4
5 6

Sample Output 2

56 77 84 95 -1 105

Sample Input 3

1 8
3 1 4 1 5 9 2 6

Sample Output 3

102 116 127 135 141 146 151 155

Hints

本題輸入資料量較大,建議 C++ 輸入輸出使用者加上 cin.tie(0); 以及 ios_base::sync_with_stdio(0); 兩行,並以 \n 代替 endl 以加速輸入。

Problem Source

Subtasks

No. Testdata Range Constraints Score
1 0~2 範例測資 0
2 3~8 $N = 1$ 14
3 9~14 $N \le 15, M \le 15$ 7
4 9~20 $N \le 50, M \le 50$ 22
5 0~34 無額外限制 57

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 262144 65536 1 5
1 1000 262144 65536 1 5
2 1000 262144 65536 1 5
3 1000 262144 65536 2 5
4 1000 262144 65536 2 5
5 1000 262144 65536 2 5
6 1000 262144 65536 2 5
7 1000 262144 65536 2 5
8 1000 262144 65536 2 5
9 1000 262144 65536 3 4 5
10 1000 262144 65536 3 4 5
11 1000 262144 65536 3 4 5
12 1000 262144 65536 3 4 5
13 1000 262144 65536 3 4 5
14 1000 262144 65536 3 4 5
15 1000 262144 65536 4 5
16 1000 262144 65536 4 5
17 1000 262144 65536 4 5
18 1000 262144 65536 4 5
19 1000 262144 65536 4 5
20 1000 262144 65536 4 5
21 1000 262144 65536 5
22 1000 262144 65536 5
23 1000 262144 65536 5
24 1000 262144 65536 5
25 1000 262144 65536 5
26 1000 262144 65536 5
27 1000 262144 65536 5
28 1000 262144 65536 5
29 1000 262144 65536 5
30 1000 262144 65536 5
31 1000 262144 65536 5
32 1000 262144 65536 5
33 1000 262144 65536 5
34 1000 262144 65536 5