#agc019c. [agc019_c]Fountain Walk

[agc019_c]Fountain Walk

问题陈述

在Nevermore市,有10810^8条街道和10810^8条大道,编号从00108110^8-1。所有的街道都是从西向东直线行驶,所有的大道都是从南向北直线行驶。相邻街道和相邻大道之间的距离正好为100米。

每个街道都与每个大道相交。每个交叉口都可以用一对(x,y)(x, y)来描述,其中xx是大道的ID,yy是街道的ID。

在该城市中有NN个喷泉,位于交叉口(Xi,Yi)(X_i, Y_i)。与普通的交叉口不同的是,每个交叉口都有一个以该交叉口为圆心、半径为1010米的圆,圆内没有道路部分。

下面的图片显示了一部分带有道路和喷泉的城市的示例。

1f931bf0c98ec6f07e612b0282cdb094.png

城市政府不希望在同一条道路上经过多个喷泉。因此,每条街道上至多有一个喷泉,每条大道上也是如此。

市民可以沿着街道、大道和喷泉的周长移动。为了从交叉口(x1,y1)(x_1, y_1)到达交叉口(x2,y2)(x_2, y_2),需要覆盖的最短距离是多少?

约束条件

  • 0x1,y1,x2,y2<1080 \leq x_1, y_1, x_2, y_2 < 10^8
  • 1N200,0001 \leq N \leq 200,000
  • 0Xi,Yi<1080 \leq X_i, Y_i < 10^8
  • iji \neq j时,XiXjX_i \neq X_j
  • iji \neq j时,YiYjY_i \neq Y_j
  • 交叉口(x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)是不同的,且不包含喷泉。
  • 所有输入值都是整数。

输入

输入的格式为标准输入(Standard Input)格式如下:

x1x_1 y1y_1 x2x_2 y2y_2 NN X1X_1 Y1Y_1 X2X_2 Y2Y_2 :: XNX_N YNY_N

输出

以米为单位打印出从交叉口(x1,y1)(x_1, y_1)到交叉口(x2,y2)(x_2, y_2)所需的最短距离。如果答案的绝对误差或相对误差不超过101110^{-11},则认为你的答案是正确的。


示例输入1

1 1 6 5
3
3 2
5 3
2 4

示例输出1

891.415926535897938

下面是一条可能的最短路径。路径从蓝点开始,到达紫点,并沿着红线行进。

c49e52b9b79003f61b8a6efa5dad8ba3.png


示例输入2

3 5 6 4
3
3 2
5 3
2 4

示例输出2

400.000000000000000

f9090ab734c89424c413f3b583376990.png


示例输入3

4 2 2 2
3
3 2
5 3
2 4

示例输出3

211.415926535897938

4b76416161f27cad20333a9ac636e00f.png