H - 自転車走 Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

初期位置から距離 L 離れた目的地まで直線上のコースに沿って自転車を走らせるゲームをする.

このゲームでは,初期位置から目的地までのルートの途中,自転車が地上を走れる場所が限定されている. ここで,自転車が地上を走れる場所を地面と呼ぶ. 地面は N 個の区間 [a_i,b_i](i=1,…,N) によって表され, 初期位置からの距離 x が,ある i に対して a_i \leq x \leq b_i を満たす場合,その地点で自転車が地上を走れることを意味する.

自転車は自動的に一定の速度で前へ走るが,自転車が地上を走っている場合,プレイヤーは自転車をジャンプさせる事ができる. ジャンプをすると,自転車はその瞬間から空中に飛び,ちょうど距離 W 進んだところで着地する. 空中を飛んでいる間は,地面以外の区間を通過する事が可能だが,着地地点は地面でなければならない. また,着地地点がゴールを超えることは許されない. ジャンプは1回のゲーム中に何回でも可能であり,着地後直ちに再びジャンプすることも可能である. 一連のジャンプを終えると,自転車は再び自動的に前へ走る.

地面以外を走らせることなく自転車をゴールまで到達させるとき,必要なジャンプの最小回数を求めよ. ただし,どのようにジャンプさせても自転車をゴールまで到達させることが不可能な場合は -1 を出力せよ.

”入力例1における自転車の走らせ方の例”

図H. 入力例1における自転車の走らせ方の例

入力形式

入力は以下の形式で与えられる.

N L W
a_1 b_1a_N b_N

出力形式

自転車をゴールさせるのに必要なジャンプの最小回数を出力せよ. ただし,ゴールさせるのが不可能な場合は -1 を出力せよ.

制約

  • 1 \leq N \leq 10^5
  • 1 \leq L \leq 10^9
  • 1 \leq W \leq L
  • a_i \lt b_i
  • b_i \lt a_{i+1}
  • a_1=0, b_N=L
  • 入力値はすべて整数である.

入出力例

入力例1

2 10 4
0 4
6 10

出力例1

1

入力例2

5 40 10
0 1
9 11
19 21
29 31
39 40

出力例2

4

入力例3

4 13 6
0 1
2 3
5 6
12 13

出力例3

2

入力例4

2 10 7
0 1
9 10

出力例4

-1

Source Name

京都大学プログラミングコンテスト2014