結果
| 問題 | No.2509 Beam Shateki |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-19 16:33:03 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 1,804 ms / 2,000 ms |
| コード長 | 2,853 bytes |
| 記録 | |
| コンパイル時間 | 544 ms |
| コンパイル使用メモリ | 84,608 KB |
| 実行使用メモリ | 85,152 KB |
| 最終ジャッジ日時 | 2026-06-19 16:33:56 |
| 合計ジャッジ時間 | 38,153 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 61 |
ソースコード
H,W = map(int,input().split())
A = [[0 for _ in range(W+2)]]
for _ in range(H):
a = [0]+list(map(int,input().split()))
A.append(a)
C = []
for i in range(1,H+1):
y = i
x = 1
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x+1>W:break
x += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = i
x = 1
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x+1>W or y+1>H:break
x += 1
y += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = i
x = 1
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x+1>W or y-1<1:break
x += 1
y -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = i
x = W
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x-1<1:break
x -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = i
x = W
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x-1<1 or y+1>H:break
x -= 1
y += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = i
x = W
cnt = A[y][x]
trace = set([(y,x)])
while True:
if x-1<1 or y-1<1:break
x -= 1
y -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
for j in range(1,W+1):
y = 1
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y+1>H:break
y += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = 1
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y+1>H or x+1>W:break
y += 1
x += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = 1
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y+1>H or x-1<1:break
y += 1
x -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = H
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y-1<1:break
y -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = H
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y-1<1 or x+1>W:break
y -= 1
x += 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
y = H
x = j
cnt = A[y][x]
trace = set([(y,x)])
while True:
if y-1<1 or x-1<1:break
y -= 1
x -= 1
cnt += A[y][x]
trace.add((y,x))
C.append((trace,cnt))
ans = 0
for a,cnt1 in C:
for b,cnt2 in C:
c = a&b
cnt3 = 0
for y,x in c:
cnt3 += A[y][x]
ans = max(ans,cnt1+cnt2-cnt3)
print(ans)