結果
問題 | No.2509 Beam Shateki |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
#yukicoder409Bfrom 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=0for 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,sywhile 1:nx,ny=nx+wx,ny+wyif A[nx][ny]==0: breakvisited.add((nx,ny)); cnt+=A[nx][ny]#変な方向にbiimしていたら打ち切りif len(visited)==0: continuefor j in range(i,len(check)): #次発tx,ty=check[j]for y in range(4):xx,xy=way[y]; mx,my=tx,ty; cnt2=0while 1:mx,my=mx+xx,my+xyif A[mx][my]==0: breakif (mx,my) in visited: continuecnt2+=A[mx][my]#答えを更新ans=max(ans,cnt+cnt2)print(ans)