#aBC356g. [ABC356G] Freestyle

[ABC356G] Freestyle

AT_abc356_g [ABC356G] Freestyle

题目描述

高桥可以游出 NN 种不同的风格。
当他用第 ii 式游泳时,每秒消耗 AiA_i 体力,每秒前进 BiB_i 米。

回答 QQ 个问题。 第 ii 次查询如下:

  • 判断是否有可能在总体力消耗不超过 CiC_i 的情况下前进 DiD_i 米。如果可能,请找出所需的最少秒数。

在这里,他可以自由组合不同的泳姿,切换泳姿的时间可以忽略不计。
具体来说,他可以使用以下步骤游泳:

  • 选择一个正整数 mm ,一个长度为 mm 的正实数序列 t=(t1,t2,,tm)t=(t_1,t_2,\dots,t_m) ,以及一个长度为 mm 的整数序列 x=(x1,x2,,xm)x=(x_1,x_2,\dots,x_m) ,其中每个元素都介于 11NN 之间(含)。
  • 然后,按照 i=1,2,,mi=1,2,\dots,m 的顺序,以第 xix_i 的方式游 tit_i 秒。

输入格式

输入内容由标准输入法提供,格式如下

NN

A1A_1 B1B_1

A2A_2 B2B_2

\vdots

ANA_N BNB_N

QQ

C1C_1 D1D_1

C2C_2 D2D_2

\vdots

CQC_Q DQD_Q

输出格式

共输出 QQ 行。
对于第 ii 次查询,在第 ii 行输出答案如下:

  • 如果不可能前进 DiD_i 米,同时保持体力消耗总量不超过 CiC_i ,则输出 -1
  • 否则,输出所需的最短时间。如果输出值与真实答案之间的绝对或相对误差不超过 10910^{-9} ,则认为输出正确。

输入输出样例 #1

输入 #1

4
1 2
2 3
3 3
4 4
5
4 7
7 7
49 100
1000 500
4 5

输出 #1

3.000000000000000000
1.750000000000000000
-1
125.000000000000000000
1.500000000000000000

说明/提示

限制因素

  • 所有输入值均为整数。
  • 1N2×1051 \le N \le 2 \times 10^5
  • 1Ai,Bi1091 \le A_i, B_i \le 10^9
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • 1Ci,Di1091 \le C_i, D_i \le 10^9

样例 11 说明

在此输入中,高桥可以用以下四种方式游泳:

  • 消耗 11 体力,每秒前进 22 米。
  • 消耗 22 体力,每秒前进 33 米。
  • 消耗 33 体力,每秒前进 33 米。
  • 消耗 44 体力,每秒前进 44 米。

此输入包含五个查询。

  • 第一个查询,C1=4,D1=7C_1=4, D_1=7
    • 选择 t=(1,2)t=(1,2)x=(2,1)x=(2,1) 。高桥游泳的过程如下:
      • 在前 11 秒,他消耗了 22 体力,前进了 33 米。
      • 接下来的 22 秒,他消耗了 22 体力,前进了 44 米。
    • 他总共消耗了 44 体力,前进了 77 米。所需的时间为 33 秒,这是最小值。
  • 第二个查询,C2=7,D2=7C_2=7, D_2=7
    • 选择 t=(7/4)t=(7/4)x=(4)x=(4) 。高桥游程如下:
      • 在最初的 7/47/4 秒内,他消耗了 77 体力,前进了 77 米。
    • 他总共消耗了 77 体力,前进了 77 米。所需的时间为 7/47/4 秒,这是最小值。
  • 第三个查询,C3=49,D3=100C_3=49, D_3=100
    • 无论高桥如何游泳,都不可能在总体力消耗不超过 4949 的情况下前进 100100 米。
  • 第四个查询, C4=1000,D4=500C_4=1000, D_4=500
    • 选择 t=(125)t=(125)x=(4)x=(4) 。高桥游泳的情况如下:
      • 在前 125125 秒,他消耗了 500500 体力,前进了 500500 米。
    • 他总共消耗了 500500 体力,前进了 500500 米。所需的时间为 125125 秒,这是最小值。
  • 第五个查询, C5=4,D5=5C_5=4, D_5=5
    • 选择 t=(1/2,1)t=(1/2,1)x=(4,2)x=(4,2) 。高桥游程如下:
      • 在前 1/21/2 秒,他消耗了 22 体力,前进了 22 米。
      • 在接下来的 11 秒内,他消耗了 22 点体力,前进了 33 米。
    • 他总共消耗了 44 体力,前进了 55 米。所需的时间为 3/23/2 秒,这是最短时间。