Bergsvandring | 프로그래밍의 벗 PivotOJ
PivotOJ

Bergsvandring

시간 제한: 2000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2015 — finalBOJ 26895
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

[이미지 1]

En bergskedja består av nn punkter, (x1x_1, y1y_1) till (xnx_n, yny_n), där x1<x2<...<xnx_1 < x_2 < ... < x_n. Mellan punkt ii och punkt i+1i+1 görs ett linjesegment.

Några vandrare vill ta sig över hela bergskedjan, dvs gå från punkt 11 till punkt nn. De kan dock inte gå på linjesegment om dess lutning är strikt större än dd. Här definierar vi lutningen av linjen genom (xix_i, yiy_i) och (xjx_j, yjy_j) som

yiyjxixj \frac{|y_i - y_j|}{|x_i - x_j|} där x|x| betecknar absolutvärdet av xx.

För att göra vandringen möjlig kan de bygga broar i bergskedjan. En bro representeras också som ett linjesegment och byggs alltid mellan två punkter ii och jj. En bro får självklart inte ha större lutning än dd, och dessutom går det inte att bygga en bro som går igenom berget på något ställe.

Bestäm den minsta totala längden av de broar som behöver byggas för att vandringen ska vara möjlig.

입력

På först raden står heltalet nn och flyttalet 0<d1050 < d \le 10^5, separerade av mellanslag. De nn följande raderna innehåller två heltal 0<xi,yi1050 < x_i, y_i \le 10^5, koordinaterna för punkt ii, också separerade av mellanslag. Det är garanterat att xi<xi+1x_i < x_{i+1}.

출력

Skriv ut ett flyttal - minsta totala längden av broar som behövs för att göra vandringen möjlig. Om det är omöjligt att utföra vandringen oavsett hur man bygger broarna, skriv istället ut 1-1.

Ett svar på det här problemet kommer att räknas som korrekt om det absoluta felet är mindre än 10310^{-3}. Det är garanterat att resultatet för ett testfall inte påverkas av en liten ändring av talet dd (detta för att undvika precisionsfel vid jämförelser av flyttal).

예제

예제 1

입력
10 1.2
0 0
2 2
3 0
4 1
5 0
6 1
7 0
8 0
9 2
11 0
출력
5.06449510224598

예제 2

입력
11 1.6
0 0
2 3
4 3
5 5
6 1
7 7
8 3
9 5
12 2
13 3
15 1
출력
9.231551362179038

예제 3

입력
3 1.9
0 0
10000 19999
30000 0
출력
-1

예제 4

입력
7 0.8
0 0
50000 20000
120000 90000
170000 70000
180000 40000
240000 40000
310000 0
출력
226157.73105863907
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.