일본 알프스의 두 등반가

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

요약
고도가 같은 두 시작점에서 출발한 두 등반가가 항상 같은 고도를 유지하며 한 지점에서 만날 때까지 이동해야 하는 최소 총 이동 거리를 구하는 문제입니다.
난이도

보통10점 중 7점

유형
최단 경로, 그래프, 기하
정답자
아직 제출이 없습니다

문제

숙련된 두 등반가가 전에 없던 새로운 시도를 계획하고 있다. 두 사람은 산줄기 위에서 고도가 같은 두 지점에서 출발하여, 매 순간 서로의 고도를 똑같이 유지한 채 하나의 경로 위를 앞뒤로 오가다가, 마침내 경로 위의 한 지점에서 서로 만난다.

한 현자는 "경로 위에 두 출발 지점(고도가 같은 두 지점)보다 낮은 지점이 하나도 없다면 이 시도는 언제나 성공할 수 있다"라고 알려 주었다. 그래서 두 등반가는 이 대담한 계획을 세울 수 있었다.

두 사람은 고도를 알려 주는 고도계와, 서로의 고도를 같게 맞추는 데 필요한 통신 장비를 이미 갖추었고, 후보 경로도 하나 골랐다. 이 경로는 가지가 없는 연속된 선분들로 이루어져 있으며, 두 출발 지점은 경로의 양 끝이고, 경로 위의 어떤 지점도 두 출발 지점보다 낮지 않다. 아래 그림은 그러한 경로의 예이다(첫 번째 예제 입력에 해당한다).

경로 예시

시도가 가능하다는 것은 보장되지만, 고도를 똑같이 유지하려면 보통 전진과 후진을 복잡하게 섞어야 하기 때문에 두 등반가는 손으로 이동 순서를 찾지 못했다. 예를 들어 위 경로에서 한 가지 방법은 다음과 같다. 등반가 A는 p1에서 출발해 s로 이동하고, 그동안 등반가 B는 p6에서 p5로 이동한다. 이어서 A는 t로 되돌아가고 B는 p4로 이동한다. 마지막으로 A가 p3에 도착하는 바로 그 순간 B도 p3에 도착한다.

가능한 이동 순서 쌍은 둘 이상일 수 있으므로, 두 사람이 이동한 길이의 합이 가장 작은 쌍을 구해야 한다. 길이는 경로 표면을 따라(호의 길이로) 잰다. 예를 들어 (0,0)(0, 0)에서 (3,4)(3, 4)로 오르는 선분의 길이는 55이다.

입력

입력은 여러 개의 데이터셋으로 이루어진다.

각 데이터셋의 첫 줄에는 경로 위 점의 개수 NN (2≤N≤1002 \le N \le 100)이 주어진다. 이어지는 NN개의 줄에는 각 점의 좌표 (xi,yi)(x_i, y_i) (i=1,2,…,Ni = 1, 2, \dots, N)가 주어진다. 두 출발 지점은 (x1,y1)(x_1, y_1)과 (xN,yN)(x_N, y_N)이며, 경로는 i=1,2,…,N−1i = 1, 2, \dots, N-1에 대해 (xi,yi)(x_i, y_i)와 (xi+1,yi+1)(x_{i+1}, y_{i+1})을 잇는 선분들로 이루어진다.

xix_i는 출발점 x1x_1에서부터 경로를 따라 잰 수평 거리이고, yiy_i는 출발 고도 y1y_1을 기준으로 한 상대 고도이다. 모든 좌표는 10001000보다 작은 음이 아닌 정수이며, i=1,2,…,N−1i = 1, 2, \dots, N-1에 대해 xi<xi+1x_i < x_{i+1}이고, i=2,3,…,N−1i = 2, 3, \dots, N-1에 대해 0=y1=yN≤yi0 = y_1 = y_N \le y_i를 만족한다.

입력의 끝은 00 하나만 있는 줄로 표시된다.

출력

각 데이터셋에 대해, 두 등반가가 고도를 똑같이 유지하며 이동하여 한 지점에서 만날 때까지 이동한 길이의 합의 최솟값(경로를 따라 잰 값)을 출력한다.

값을 소수점 아래 정확히 둘째 자리까지 반올림하여 데이터셋마다 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    6
    0 0
    3 4
    9 12
    17 6
    21 9
    33 0
    5
    0 0
    10 0
    20 0
    30 0
    40 0
    10
    0 0
    1 2
    3 0
    6 3
    9 0
    11 2
    13 0
    15 2
    16 2
    18 0
    7
    0 0
    150 997
    300 1
    450 999
    600 2
    750 998
    900 0
    0
    
    예상 출력
    52.50
    40.00
    30.34
    10078.07
    
  2. 예제 2

    입력
    3
    0 0
    5 5
    10 0
    0
    
    예상 출력
    14.14
    
  3. 예제 3

    입력
    2
    0 0
    10 0
    0
    
    예상 출력
    10.00
    
  4. 예제 4

    입력
    5
    0 0
    2 2
    4 0
    6 2
    8 0
    0
    
    예상 출력
    11.31