結果

問題 No.2509 Beam Shateki
ユーザー navel_tosnavel_tos
提出日時 2023-10-20 21:48:13
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 708 ms / 2,000 ms
コード長 1,289 bytes
コンパイル時間 208 ms
コンパイル使用メモリ 82,464 KB
実行使用メモリ 77,688 KB
最終ジャッジ日時 2024-09-20 18:14:23
合計ジャッジ時間 20,883 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 61
権限があれば一括ダウンロードができます

ソースコード

diff #

#yukicoder409B

from collections import deque as dq

#入力受取
H,W=map(int,input().split())
A=[[0]*(W+3)]+[[0]+list(map(int,input().split()))+[0]*2 for _ in range(H)]+[[0]*(W+3)]*2

#biimは4方向(テンキー1236方向)にのみ撃てればOK 撃つべき位置を列挙
check=[(h,w) for h in range(H+2) for w in range(W+2) if h in set([0,H+1]) or w in set([0,W+1])]
way=[(-1,-1),(0,-1),(1,-1),(1,0)]

#実際に撃ってみる 処理は「0のマスに侵入したら終了」
ans=0
for i in range(len(check)):  #初発
    sx,sy=check[i]
    for x in range(4):  #方向
        visited=set(); cnt=0; wx,wy=way[x]; nx,ny=sx,sy
        while 1:
            nx,ny=nx+wx,ny+wy
            if A[nx][ny]==0: break
            visited.add((nx,ny)); cnt+=A[nx][ny]
        #変な方向にbiimしていたら打ち切り
        if len(visited)==0: continue

        for j in range(i,len(check)):  #次発
            tx,ty=check[j]
            for y in range(4):
                xx,xy=way[y]; mx,my=tx,ty; cnt2=0
                while 1:
                    mx,my=mx+xx,my+xy
                    if A[mx][my]==0: break
                    if (mx,my) in visited: continue
                    cnt2+=A[mx][my]
                #答えを更新
                ans=max(ans,cnt+cnt2)
print(ans)
0