슬랄롬

시간 제한1초메모리 제한128 MB

요약
출발점과 높이가 감소하는 순서로 놓인 수평 게이트들이 주어질 때, 각 게이트를 순서대로 지나가는 최단 경로의 길이를 구합니다.
난이도

보통10점 중 6점

유형
기하, 그리디, 이분 탐색
정답자
아직 제출이 없습니다

문제

마드리드에는 눈이 거의 내리지 않지만, 그곳에서는 겨울 스포츠, 특히 스키에 대한 관심이 커지고 있으며 많은 사람들이 주말이나 심지어 몇 주 동안 산에서 실력을 갈고닦는다. 이 문제에서는 알파인 스키 종목 중 하나인 슬랄롬(회전)만을 다룬다. 코스는 여러 개의 게이트를 늘어놓아 만들어지며, 각 게이트는 두 개의 기문(폴)으로 이루어진다. 선수는 모든 게이트의 두 기문 사이를 통과해야 하며, 어떤 게이트도 놓치지 않고 가장 짧은 시간에 코스를 완주한 선수가 우승한다.

여러분은 스키를 배우기 시작한 지 얼마 되지 않았지만 이미 2018년 동계 올림픽 출전을 목표로 삼았으며, 이 대회에는 마드리드가 유치를 신청할 것으로 예상된다. 이론 훈련의 일환으로, 출발점과 일련의 게이트가 주어질 때 주어진 출발점에서 시작하여 각 게이트를 차례로 통과해 마지막 게이트(결승선)에 도달하는 경로의 최소 길이를 계산하는 프로그램을 작성해야 한다. 모든 게이트는 수평이며 높은 것부터 낮은 것 순서로 주어지므로 그 순서대로 통과해야 한다고 가정해도 된다. 여러분은 아무리 어려운 회전이라도 연속으로 해낼 수 있는 뛰어난 스키어이므로, 오직 경로의 총 길이를 최소화하는 것만 신경 쓰면 된다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 케이스의 첫 줄에는 게이트의 개수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 다음 줄에는 출발 위치의 데카르트 좌표 xx와 yy가 이 순서로 두 개의 실수로 주어진다. 이어서 nn개의 줄에 각각 세 실수 yy x1x_1 x2x_2가 주어지며, 이는 해당 게이트가 (x1,y)(x_1, y)에서 (x2,y)(x_2, y)까지의 수평 선분임을 뜻한다. x1<x2x_1 < x_2라고 가정해도 된다. yy 값은 엄격히 감소하며 항상 출발 위치의 yy보다 작다. 마지막 게이트가 결승선이다. 모든 좌표는 −500000-500000 이상 500000500000 이하이다. nn 값이 00이면 입력의 끝을 의미한다. 각 케이스 뒤에는 빈 줄이 하나 온다.

출력

각 테스트 케이스마다 결승선에 도달하는 데 필요한 경로의 최소 길이를 소수점 아래 정확히 66자리로 반올림하여 한 줄에 출력하라. 정확한 답이 소수점 여섯째 자리 반올림의 중간값(정확히 절반)에 놓이는 경우는 없도록 데이터가 보장되므로, 이 반올림은 항상 명확하게 결정된다.

예제1

  1. 예제 1

    입력
    2
    0 2
    1 1 2
    0 0.5 3
    
    3
    0 4
    3 1 2
    2 -1 0
    1 1 2
    
    0
    
    예상 출력
    2.414214
    4.242641