보물 지도

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

요약
원판의 경계에서 출발해 내부의 목표점까지, 축 방향이나 45도 방향으로만 움직이되 원판을 벗어나지 않으면서 걷는 최소 총 거리를 구한다.
난이도

어려움10점 중 8점

유형
기하, 수학, 최단 경로, 그리디
정답자
아직 제출이 없습니다

문제

해적의 보물 지도는 무인도에 상륙한 지점에서 보물이 묻힌 X 표시 지점까지 이어지는 이동 지시들의 목록입니다. 어떤 섬 하나에서 이 걷기의 최단 경로를 구하는 것이 목표입니다.

섬은 원점 (0,0)(0, 0)을 중심으로 하고 반지름이 rr 걸음인 원판입니다. 중심을 기준으로 (0,1)(0, 1)은 북(north), (0,−1)(0, -1)은 남(south), (1,0)(1, 0)은 동(east), (−1,0)(-1, 0)은 서(west)이고, (1,1)(1, 1)은 북동(northeast), (1,−1)(1, -1)은 남동(southeast), (−1,1)(-1, 1)은 북서(northwest), (−1,−1)(-1, -1)은 남서(southwest)입니다.

상륙 지점은 섬의 해안, 즉 경계 원 위의 한 점이고, X 표시 지점은 섬 안 어딘가에 있습니다. 하나의 지시는 다음 형태입니다.

방향 거리

여기서 방향은 north, south, east, west, northeast, northwest, southeast, southwest 중 하나이고, 거리는 그 방향으로 걷는 걸음 수입니다. 예를 들어 northeast 방향으로 거리 dd만큼 걸으면 동쪽으로 d/2d / \sqrt{2} 걸음, 북쪽으로 d/2d / \sqrt{2} 걸음 이동합니다.

섬을 한 번도 벗어나지 않으면서 상륙 지점에서 X 표시 지점까지 이어지는 모든 지시 수열을 생각합니다. 그러한 수열 중에서 걸은 총 거리(각 지시의 거리의 합)의 최솟값을 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 다섯 개의 정수 rr, xx, yy, XX, YY가 주어지는 한 줄입니다. 각각 섬의 반지름, 상륙 지점의 좌표 (x,y)(x, y), X 표시 지점의 좌표 (X,Y)(X, Y)를 뜻합니다. 상륙 지점은 해안 위에 있으므로 x2+y2=r2x^2 + y^2 = r^2이고, X 표시 지점은 섬 안에 있으므로 X2+Y2≤r2X^2 + Y^2 \le r^2입니다. 상륙 지점과 X 표시 지점은 서로 다릅니다. 마지막 테스트 케이스 뒤에는 -1 하나만 있는 줄이 옵니다.

출력

각 테스트 케이스마다, 걸은 총 거리의 최솟값을 소수점 아래 여섯째 자리까지 반올림하여 한 줄에 출력하세요.

예제2

  1. 예제 1

    입력
    100 0 100 25 50
    -1
    
    예상 출력
    60.355339
    
  2. 예제 2

    입력
    100 100 0 0 0
    -1
    
    예상 출력
    100.000000