結果
| 問題 |
No.2641 draw X
|
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2024-02-19 22:23:55 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,211 bytes |
| コンパイル時間 | 382 ms |
| コンパイル使用メモリ | 82,236 KB |
| 実行使用メモリ | 141,760 KB |
| 最終ジャッジ日時 | 2024-09-29 02:17:02 |
| 合計ジャッジ時間 | 9,245 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 37 WA * 4 |
ソースコード
H,W=map(int,input().split())
S=[input() for i in range(H)]
cnt0=[[0]*(H+W) for i in range(H)]
cnt1=[[0]*(H+W) for i in range(H)]
for i in range(H):
for j in range(W):
if S[i][j]=='#':
cnt0[i][i-j]+=1
cnt1[i][i+j]+=1
for i in range(1,H):
for j in range(H+W):
cnt0[i][j]+=cnt0[i-1][j]
cnt1[i][j]+=cnt1[i-1][j]
result0=[[0]*(H+W) for i in range(H)]
result1=[[0]*(H+W) for i in range(H)]
for i in range(1,H-1):
for j in range(1,W-1):
if S[i][j]=='.':
continue
l=0
r=min(i,H-1-i,j,W-1-j)
while True:
m=(l+r+1)//2
k1=cnt0[i+m][i-j]
k2=cnt1[i+m][i+j]
if i-m>0:
k1-=cnt0[i-m-1][i-j]
k2-=cnt1[i-m-1][i+j]
if k1+k2==2*(2*m+1):
l=m
else:
r=m-1
if l==r:
break
if l>0:
result0[i-m][i-j]+=1
result1[i-m][i+j]+=1
if i+m+1<H:
result0[i+m+1][i-j]-=1
result1[i+m+1][i+j]-=1
for i in range(1,H):
for j in range(H+W):
result0[i][j]+=result0[i-1][j]
result1[i][j]+=result1[i-1][j]
for i in range(H):
for j in range(W):
count=result0[i][i-j]+result1[i][i+j]
if S[i][j]=='#':
if count==0:
print('No')
exit()
print('Yes')
ゼット