atcoder#AGC019C. [AGC019C] Fountain Walk

[AGC019C] Fountain Walk

配点 : 900900

問題文

都市ネバーモアには、10810^8 本の東西方向の通りと 10810^8 本の南北方向の通りがあり、どちらにも 00 から 108110^8-1 の番号が付けられています。隣接する二本の東西方向の通りの間の距離はちょうど 100100 メートルで、隣接する二本の南北方向の通りの間の距離もちょうど 100100 メートルです。

すべての東西方向の通りは、すべての南北方向の通りと交わります。すべての交差点は、交差する南北方向の通りの番号を xx、東西方向の通りの番号を yy として組 (x,y)(x, y) で表されます。

この都市には 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),(x2,y2)(x_1, y_1), (x_2, y_2) は異なり、これらの位置に噴水は設置されていない。
  • 入力値はすべて整数である。

入力

入力は以下の形式で標準入力から与えられる。

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 6 5
3
3 2
5 3
2 4
891.415926535897938

最短経路の一つを下の図に示します。スタート地点は青の点、ゴール地点は紫の点、途中経路は赤の線です。

c49e52b9b79003f61b8a6efa5dad8ba3.png

3 5 6 4
3
3 2
5 3
2 4
400.000000000000000

f9090ab734c89424c413f3b583376990.png

4 2 2 2
3
3 2
5 3
2 4
211.415926535897938

4b76416161f27cad20333a9ac636e00f.png