結果
| 問題 |
No.2456 Stamp Art
|
| コンテスト | |
| ユーザー |
ゼット
|
| 提出日時 | 2023-09-01 23:59:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,561 bytes |
| コンパイル時間 | 483 ms |
| コンパイル使用メモリ | 82,716 KB |
| 実行使用メモリ | 113,576 KB |
| 最終ジャッジ日時 | 2025-01-03 13:36:31 |
| 合計ジャッジ時間 | 13,035 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 WA * 2 |
ソースコード
H,W=map(int,input().split())
S=[input() for i in range(H)]
v=[[0]*W for i in range(H)]
for i in range(H):
for j in range(W):
if S[i][j]=='#':
v[i][j]+=1
if i>0 and i<H-1:
if S[i-1][j]=='.' and S[i+1][j]=='.' and S[i][j]=='#':
print(1)
exit()
if j>0 and j<W-1:
if S[i][j-1]=='.' and S[i][j+1]=='.' and S[i][j]=='#':
print(1)
exit()
for i in range(H):
for j in range(1,W):
v[i][j]=v[i][j-1]+v[i][j]
for i in range(1,H):
for j in range(W):
v[i][j]=v[i-1][j]+v[i][j]
result=10**10
DX=[1,1,-1,-1]
DY=[1,-1,1,-1]
for i in range(H):
for j in range(W):
if S[i][j]=='.':
continue
for dx,dy in zip(DX,DY):
x=i-dx
y=j-dy
t=0
if x<0 or x>=H:
t+=1
else:
if S[x][j]=='.':
t+=1
if y<0 or y>=W:
t+=1
else:
if S[i][y]=='.':
t+=1
if t==2:
l=1
r=2000
while True:
m=(l+r+1)//2
i2,j2=i+dx*(m-1),j+dy*(m-1)
if i2<0 or i2>=H or j2<0 or j2>=W:
r=m-1
else:
j3=max(j,j2)
j4=min(j,j2)
i3=max(i,i2)
i4=min(i,i2)
ans=v[i3][j3]
if j4>0:
ans-=v[i3][j4-1]
if i4>0:
ans-=v[i4-1][j3]
if i4>0 and j4>0:
ans+=v[i4-1][j4-1]
if ans==m**2:
l=m
else:
r=m-1
if l==r:
break
result=min(result,l)
print(result)
ゼット