結果
| 問題 |
No.2641 draw X
|
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2024-02-19 22:40:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,364 bytes |
| コンパイル時間 | 488 ms |
| コンパイル使用メモリ | 82,364 KB |
| 実行使用メモリ | 149,312 KB |
| 最終ジャッジ日時 | 2024-09-29 02:32:32 |
| 合計ジャッジ時間 | 10,729 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 RE * 29 |
ソースコード
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)]
p=[[0]*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
p[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]-p[i][j]
if count<0:
exit()
if (S[i][j]=='.' and count>0):
p=[0]
print(p[1])
if S[i][j]=='#':
if count==0:
print('No')
exit()
p=[0]
print('Yes')
ゼット