问题描述
在一个二维平面上,有一个凸多边形C,由N个顶点组成,还有两个点S=(sx,sy)和T=(tx,ty)。C的顶点按逆时针顺序排列,依次是(x1,y1),(x2,y2),…, (xN,yN)。保证S和T在多边形外部。
找出从点S到点T的最短距离,除了沿着C的圆周进入多边形内部以外,不得进入多边形的内部。
约束条件
- 3≤N≤105
- ∣xi∣,∣yi∣,∣sx∣,∣sy∣,∣tx∣,∣ty∣≤109
- (x1,y1),(x2,y2),…, 和 (xN,yN) 按逆时针顺序组成一个凸多边形。
- C 的任意三个顶点不共线。
- S 和 T 在 C 的外部且不在 C 的圆周上。
- 输入中所有的值都是整数。
输入
输入以以下格式从标准输入给出:
N
x1 y1
x2 y2
⋮
xN yN
sx sy
tx ty
输出
输出答案。
如果你的输出与真值的绝对误差或相对误差不超过 10−6,则视为正确。
示例输入 1
4
1 1
3 1
3 3
1 3
0 2
5 2
示例输出 1
5.65028153987288474496
以下图示展示了一种最短距离的路径。

如果按照 (0,2)→(1,3)→(3,3)→(5,2) 的顺序行进,从点 S 到点 T 的路径长度为 5.650281...。我们可以证明这是最小值。请注意,你可能会进入多边形的圆周。
请注意,如果你的输出与真值的绝对误差或相对误差不超过 10−6,则视为正确。例如,类似 5.650287
的输出也被视为正确。
示例输入 2
3
0 0
2 0
1 10
3 7
10 3
示例输出 2
8.06225774829854965279