#ABC356G. 自由泳

自由泳

自由泳

题目描述

高桥君可以用 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 的、每个元素都在 11NN 之间的整数序列 x=(x1,x2,,xm)x=(x_1,x_2,\dots,x_m)

然后,按照 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 行输出答案,规则如下:

如果无法在总体力消耗不超过 CiC_i 的前提下前进 DiD_i 米,输出 -1。

否则,输出所需的最少时间。当输出值与正确答案的绝对误差或相对误差不超过 10910^{-9} 时,答案视为正确。

样例

4
1 2
2 3
3 3
4 4
5
4 7
7 7
49 100
1000 500
4 5
3.000000000000000000
1.750000000000000000
-1
125.000000000000000000
1.500000000000000000

本输入中,高桥君可以用以下四种泳姿游泳:

每秒消耗 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 秒,这是最短的。

数据范围

  • 所有输入值均为整数
  • 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
难度 省选/NOI-
通过率
尝试 0
已通过 0
ID
3318
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签