#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