만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

점프 경로

시간 제한2초메모리 제한1024 MB

요약
직선 위에 금지 구역 n곳이 있고, 길이 R의 장대로 각 구역을 뛰어넘을 때 A에서 B까지 가는 최소 시간을 구합니다.
난이도

보통10점 중 6점

유형
정렬, 그리디, 구현, 수학
정답자
아직 제출이 없습니다

문제

뽀빠이(Popeye the Sailor)는 시금치를 즐겨 먹는다. 옥수수로 만든 파이프로 담배 피우기도 좋아해서, 늘 담배를 피운다.

뽀빠이는 Sweethaven 마을에 산다. 마을의 큰길은 직선으로 볼 수 있고, 이 길 위에 nn개의 공공장소가 있다. 각 장소는 직선 위 좌표 x1,x2,⋯ ,xnx_1, x_2, \cdots, x_n에 놓인 점이다.

뽀빠이는 큰길 위의 A 지점에서 B 지점까지 가야 한다. Sweethaven 당국은 법을 만들었다. 공공장소에서 rr보다 가까운 곳에서 담배를 피우는 것은 금지된다. 뽀빠이에게는 길이가 RR인 장대가 있으며 R≥rR \ge r이다. 그는 이 장대로 금지 구역을 뛰어넘을 수 있다.

뽀빠이는 A 지점에서 출발한다. xx에서 yy까지 걸으면 ∣x−y∣|x-y|의 시간이 걸린다. 언제든지 장대를 사용해 반지름 RR인 반원을 따라 xx에서 x+2Rx+2R 또는 x−2Rx-2R로 이동할 수 있다. 이때 πR\pi R의 시간이 걸린다. 경로의 끝에서 뽀빠이는 B 지점에 있어야 하며, 이동 경로의 어떤 점도 공공장소와 rr보다 가까워서는 안 된다.

입력

첫째 줄에 정수 nn, rr, RR, AA, BB가 주어진다 (1≤n≤5001 \le n \le 500, 1≤r≤R≤1061 \le r \le R \le 10^6, −109≤A,B≤109-10^9 \le A, B \le 10^9). 둘째 줄에 정수 x1,x2,⋯ ,xnx_1, x_2, \cdots, x_n이 주어진다 (−109≤xi≤109-10^9 \le x_i \le 10^9). 모든 xix_i는 서로 다르다. 점 A와 점 B는 서로 다르며, 둘 중 어느 점도 금지 구역에 속하지 않는다.

출력

최단 시간을 실수 하나로 출력한다. 절대 오차 또는 상대 오차가 10−610^{-6} 이하이면 정답으로 인정한다. A에서 B로 갈 수 없으면 −1-1을 출력한다.

힌트

문제 예시에서 최적 경로 중 하나는 아래 그림과 같다. 걸린 시간은 8+15π8 + 15\pi이다.

예제1

  1. 예제 1

    입력
    5 2 5 3 9
    13 0 17 7 18
    
    예상 출력
    55.1238898038