#arc0014. [arc001_4]レースゲーム

[arc001_4]レースゲーム

問題文

高橋君は、レーシングゲームをプレイしようとしています。
レースは (x,y)=(start,0)(x, y) = (start, 0) からスタートし、(x,y)=(goal,N)(x, y) = (goal, N) のゴールに向かって走っていきます。
0kN0 ≦ k ≦ Ny=ky=k に対してコースの存在する左端と右端が与えられ、それぞれを順に結んだ線の内側がコースとなります。

図:入力1の例。赤丸がスタート地点。青丸がゴール地点。茶色部分がコースとなる。

レースに使う車はコース上以外を走ることは出来ません。また、一瞬で方向転換できるものとし、車の幅及び長さは無視できるものとします。
高橋君は、このレーシングゲームを攻略するためにスタートからゴールまでの最短経路を求めたいです。


入力

入力は以下の形式で与えられる。NN startstart goalgoal l0l_0 r0r_0 l1l_1 r1r_1 :: :: lNl_N rNr_N

  • 11 行目には、レースの全長 NN が与えられる。

  • 22 行目には、コースのスタート地点の startstart 座標及びゴール地点の goalgoal 座標が空白を区切りとして与えられる。

  • 続く 33 行目から N+2N+2 行目の各行には、i+3i+3 行目にy=iy=i のコースの左端 lil_i 及びコースの右端 rir_i が空白を区切りとして与えられる。

  • また、入力値はそれぞれ以下の条件を満たす。

  • NN は整数であり、1N200,0001 ≦ N ≦ 200,000 を満たす。

  • lil_i 及び rir_i は整数であり、0liri1,000,0000 ≦ l_i < r_i ≦ 1,000,000 を満たす。

  • startstart は整数であり、l0startr0l_0 ≦ start ≦ r_0 を満たす。

  • goalgoal は整数であり、lNgoalrNl_N ≦ goal ≦ r_N を満たす。

出力

レースの最短経路を 11 行で出力せよ。
なお、出力は絶対誤差または相対誤差 1e91e-9 以下までを許容する。


入力例 1


7
3 3
2 5
4 6
2 3
3 6
3 4
4 6
2 5
1 5

出力例 1


8.22677276241436
  • 赤丸をスタート地点、青丸をゴール地点として、下図の赤線のルートが最短となります。


入力例 2


5
3 3
0 5
0 5
0 5
0 5
0 5
0 5

出力例 2


5

Source Name

ARC 001