結果
| 問題 |
No.168 ものさし
|
| ユーザー |
chocorusk
|
| 提出日時 | 2020-09-14 09:45:31 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 63 ms / 2,000 ms |
| コード長 | 670 bytes |
| コンパイル時間 | 241 ms |
| コンパイル使用メモリ | 82,400 KB |
| 実行使用メモリ | 67,396 KB |
| 最終ジャッジ日時 | 2024-06-22 00:39:40 |
| 合計ジャッジ時間 | 2,202 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 19 |
ソースコード
import sys
read=sys.stdin.buffer.read
readline=sys.stdin.buffer.readline
readlines=sys.stdin.buffer.readlines
n=int(readline())
xy=list(map(int, read().split()))
x=xy[::2]
y=xy[1::2]
INF=3*10**18
d=[INF]*n
d[0]=0
dq=[INF]*n
dq[0]=0
for _ in range(n):
i=dq.index(min(dq))
d1=dq[i]
if i==n-1 or d1==INF:
break
x1, y1=x[i], y[i]
dq[i]=INF
for j, (x2, y2) in enumerate(zip(x, y)):
d2=max(d1, (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
if d[j]>d2:
d[j]=d2
if dq[j]>d2:
dq[j]=d2
mn=d[n-1]
l, r=0, 2*10**8
while r-l>1:
m=(l+r)//2
if 100*m*m>=mn:
r=m
else:
l=m
print(10*r)
chocorusk