SP10076 SLALOM2 - Slalom

题目描述

马德里虽然降雪稀少,但滑雪兴趣在增长,尤其是高山滑雪中的障碍滑雪。障碍滑雪的赛道由一系列门组成,滑雪者需要在两个杆之间通过,最快完成的人获胜。 在这个问题中,有一个关于滑雪的训练任务:编写一个程序计算从起点到终点通过所有门的最短路径,假设门水平排列,滑雪者可以进行任意转弯,目标是最小化路径长度。

输入格式

每个测试用例的第一行给出了门的数量 $n$ $(1 ≤ n ≤ 1 000)$。 下一行包含两个浮点数,即起始位置的坐标 $x,y$。 接下来 $n$ 行,每行有三个浮点数,$y,x_1,x_2$,这意味着下一个门是从 $(x_1,y)$ 到 $(x_2,y)$ 的水平线,保证 $x_1 < x_2$。$y$ 的值是严格递减的,并小于起始位置的值。最后一个门代表终点线。所有坐标都在 $− 500 000 $ 和 $500 000$ 之间(含)。 $n$ 的值为 $0$ 表示输入结束。每个测试用例后面都有一个空行。

输出格式

对于每个测试用例,输出一条到达终点线所需的最小距离的线。答案允许误差 $10^{-7}$。

说明/提示

### 输入输出样例 #### 输入 #1 ``` 2 0 2 1 1 2 0 0.5 3 3 0 4 3 1 2 2 -1 0 1 1 2 0 ``` #### 输出 #1 ``` 2.41421356237 4.24264068712 ```