#B001. 沙盘游戏Sand table game

沙盘游戏Sand table game

沙盤遊戲

【問題描述】

Ivy是如此地喜歡程式設計,以至於在面對遊戲時也是如此。 在沙盤遊戲中有一個巨大的方形沙盤(長方形或者正方形),該沙盤被分隔成邊長為1的小方格,每個小方格內有一個整數。 沙盤玩家需要在沙盤中圈出一個方形(長方形或者正方形都可以)的區域(必須沿著小方格的邊界劃線,不能穿過小方格的內部),目標是爭取被圈區域內的整數之和最大。

為了描述方便,Ivy把這個沙盤用n*m個整數來表示,每個整數所在位置表示沙盤中一個邊長為1的小方格。

Ivy現在需要程式設計解决這樣一個問題:在nm(n行m列)個整數中選擇一個xy(x行y列)的方形區域(x最大可達n,y最大可達m),使得這x*y個整數之和是所有可以選擇的方形區域中最大的,並輸出這個最大總和值。

【輸入】

第一行包含n和m二個整數,中間用一個空格分隔,分別表示原始方形區域中所包含的行數和列數。 下麵有n行,每行m個整數(每個整數的範圍是-200到200)組成的數據。

【輸出】

一行一個整數,表示某個被圈出的方形區域中所有位置上整數之和,該值必須是所有可以圈出的方形區域所對應整數和中,總和最大的那個,該值確保不超過106。

【輸入輸出樣例】

in

3 3

10 -21 9

7 8 4

-6 1 0	

out

19

【輸入輸出樣例說明】

圈出的方形區域是第二行的3個整數,即7、8、4,此三數之和為19,為所有可圈出區域中整數之和的最大值。
【數據規模說明】

對於10%的數據, n,m<=5

對於40%的數據, n,m<=30

對於60%的數據, n,m<=40

對於90%的數據, n,m<=80

對於100%的數據, n,m<=280