結果
| 問題 | No.2509 Beam Shateki | 
| コンテスト | |
| ユーザー |  detteiuu | 
| 提出日時 | 2024-12-22 01:18:26 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 238 ms / 2,000 ms | 
| コード長 | 1,568 bytes | 
| コンパイル時間 | 316 ms | 
| コンパイル使用メモリ | 82,584 KB | 
| 実行使用メモリ | 101,380 KB | 
| 最終ジャッジ日時 | 2024-12-22 01:18:41 | 
| 合計ジャッジ時間 | 12,202 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 61 | 
ソースコード
from collections import defaultdict
H, W = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(H)]
SUM = sum(sum(a) for a in A)
if H == 1 or W == 1:
    exit(print(SUM))
sumH = [0]*H
sumW = [0]*W
sumHW1 = [0]*(H+W-1)
sumHW2 = [0]*(H+W-1)
for i in range(H):
    for j in range(W):
        sumH[i] += A[i][j]
        sumW[j] += A[i][j]
        sumHW1[i-j] += A[i][j]
        sumHW2[i+j] += A[i][j]
sumHS = sorted(sumH)
sumWS = sorted(sumW)
sumHW1S = sorted(sumHW1)
sumHW2S = sorted(sumHW2)
ans = max(sum(sumHS[-2:]), sum(sumWS[-2:]), sum(sumHW1S[-2:]), sum(sumHW2S[-2:]))
D = defaultdict(int)
for i in range(H):
    for j in range(W):
        T = (0, i, i-j)
        D[T] = A[i][j]
        T = (1, i, j)
        D[T] = A[i][j]
        T = (2, i, i+j)
        D[T] = A[i][j]
        T = (3, i-j, j)
        D[T] = A[i][j]
        T = (4, i-j, i+j)
        D[T] = A[i][j]
        T = (5, j, i+j)
        D[T] = A[i][j]
for i in range(H):
    for j in range(-W+1, H):
        ans = max(ans, sumH[i]+sumHW1[j]-D[(0, i, j)])
for i in range(H):
    for j in range(W):
        ans = max(ans, sumH[i]+sumW[j]-D[(1, i, j)])
for i in range(H):
    for j in range(H+W-1):
        ans = max(ans, sumH[i]+sumHW2[j]-D[(2, i, j)])
for i in range(-W+1, H):
    for j in range(W):
        ans = max(ans, sumHW1[i]+sumW[j]-D[(3, i, j)])
for i in range(-W+1, H):
    for j in range(H+W-1):
        ans = max(ans, sumHW1[i]+sumHW2[j]-D[(4, i, j)])
for i in range(W):
    for j in range(H+W-1):
        ans = max(ans, sumW[i]+sumHW2[j]-D[(5, i, j)])
print(ans)
            
            
            
        