#gigacode2019e. [gigacode_2019_e]車の乗り継ぎ

[gigacode_2019_e]車の乗り継ぎ

配点: 100100

問題文

ギガ通りは西から東へ一直線に走る,長さ LL メートルの道路です.

E869120 君は最初ギガ通りの西端におり,分速 VSV_S メートルで残り DSD_S メートル走れる車に乗っています.

この通りにはこれ以外にも NN 個の車があります.ii 個目の車は西端から XiX_i メートルの位置にあり,分速 ViV_i メートルで残り DiD_i メートル走れます.

あなたは,車を 西から東の向きに 運転し,ギガ通りの東端にたどり着きたいです.

彼は,途中で車が停まっている場所まで運転してその車に乗り換えることもできます.乗り継ぎにかかる時間は 00 分として良いです.

さて,彼はギガ通りの東端にたどり着けるでしょうか?たどり着けない場合このことを報告し,たどり着ける場合は東端にたどり着くのに必要な最短時間 (分) を報告してください.

制約

  • 0leqNleq20190 \\leq N \\leq 2 \\ 019
  • 1leqLleq400750171 \\leq L \\leq 40 \\ 075 \\ 017
  • 1leqX1,X2,dots,XNleqL11 \\leq X_1, X_2, \\dots, X_N \\leq L-1
  • X1,X2,dots,XNX_1, X_2, \\dots, X_N はすべて異なる
  • $1 \\leq V_S, V_1, V_2, \\dots, V_N \\leq 100 \\ 000$
  • 1leqDS,D1,D2,dots,DNleqL1 \\leq D_S, D_1, D_2, \\dots, D_N \\leq L
  • 入力はすべて整数

部分点

この問題はいくつかの小課題に分けられ,その小課題のすべてのテストケースに正解した場合に「この小課題に正解した」とみなされます.
提出したソースコードの得点は,正解した小課題の点数の合計となります.

  1. (9 点) N=0N = 0
  2. (6 点) N=0N = 0 または N=1N = 1
  3. (22 点) Nleq10N \\leq 10
  4. (30 点) VS=1V_S = 1 であり、すべての ii に対して Vi=1V_i = 1
  5. (33 点) 追加の制約はない.

小課題 4 のヒント

この小課題は,「東端にたどり着けるかどうか」を判定する問題です.なぜなら,すべての場所で分速 11 メートルで進むので,たどり着ける場合は最短時間が絶対 LL 分になるからです.小課題 44 に取り掛かる人は,このヒントも踏まえて考えてみるのも良いでしょう.


入力

入力は以下の形式で標準入力から与えられます.

NN LL VSV_S DSD_S X1X_1 V1V_1 D1D_1 X2X_2 V2V_2 D2D_2 :: :: :: XNX_N VNV_N DND_N

出力

ギガ通りの東端に何をやってもたどり着けないならば impossible と出力してください.
たどり着ける場合は,その際にかかる最短時間 (分) を出力してください.これは小数点以下何桁でも出力して良いですが,答えとの誤差(絶対誤差または相対誤差)が 10510^{-5} 以内であったときのみ正解とみなされます.


入力例 1

3 10
1 5
3 5 8
6 10 5
7 2 7

出力例 1

4.000000000000000000000

次のような移動をすると 44 分でギガ通りの東端にたどり着くことができ、これが最短です。

  • まず、最初に乗る車で西端から 33 メートルのところまで進む。これに 3/1=33/1 = 3 分かかる。
  • 次に、11 個目の車で西端から 66 メートルのところまで進む。これに 3/5=0.63/5 = 0.6 分かかる。
  • 最後に、22 個目の車で東端 (西端から 1010 メートルのところ) まで進む。これに 4/10=0.44/10 = 0.4 分かかる。
  • 合計 3+0.6+0.4=43 + 0.6 + 0.4 = 4 分で、東端にたどり着くことができた。

入力例 2

3 10
1 5
3 5 8
6 1 5
7 2 7

出力例 2

4.400000000000000355271

次のような移動をすると 4.44.4 分でギガ通りの東端にたどり着くことができ、これが最短です。

  • まず、最初に乗る車で西端から 33 メートルのところまで進む。これに 3/1=33/1 = 3 分かかる。
  • そして、11 個目の車で東端 (西端から 1010 メートルのところ) まで進む。これに 7/5=1.47/5 = 1.4 分かかる。
  • 合計 3+1.4=4.43 + 1.4 = 4.4 分で、東端にたどり着くことができた。

入力例 3

2 10
1 4
3 1 2
6 1 10

出力例 3

impossible

この場合、どうやってもギガ通りの東端にたどり着くことはできません。
また、入出力例 33 は小課題 44VS=1V_S = 1Vi=1V_i = 1」の制約を満たします。


入力例 4

0 1
99991 1

出力例 4

0.000010000900081007291

答えは 1.00009e-05 のような形式ではなく、0.00001000090008 のような形式で出力する必要があることに注意してください。
また、入出力例 44 は小課題 11N=0N = 0」の制約を満たします。


入力例 5

1 100
5 60
50 7 90

出力例 5

17.142857142857142349612

この場合、西端から 5050 メートルのところで乗り継ぐのが最適となります。
また、入出力例 55 は小課題 22N=0N = 0 または N=1N = 1」の制約を満たします。


入力例 6

4 1000
37 426
725 16 612
237 19 458
516 13 509
408 17 400

出力例 6

46.861585850556437549130

絶対誤差または相対誤差が 10510^{-5} 以内ならば正解とみなされますので、46.86158546.86159 などと出力しても正解となります。