CF1676E.Eating Queries

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Eating Queries

题目描述

Timur 有 nn 颗糖果。第 ii 颗糖果含有 aia_i 单位的糖分。因此,吃下第 ii 颗糖果,Timur 就会摄入 aia_i 单位的糖分。

Timur 会向你提出 qq 个关于他糖果的问题。对于第 jj 个问题,你需要回答他至少需要吃多少颗糖果,才能使摄入的糖分总量大于等于 xjx_j,如果无法达到这样的糖分总量,则输出 1-1。换句话说,你需要输出最小的 kk,使得吃下 kk 颗糖果后,Timur 摄入的糖分总量至少为 xjx_j,或者说明不存在这样的 kk

注意,同一颗糖果不能重复吃,每个问题互相独立(Timur 可以在不同的问题中重复使用同一颗糖果)。

输入格式

输入的第一行包含一个整数 tt1t10001 \leq t \leq 1000),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnqq1n,q1.51051 \leq n, q \leq 1.5 \cdot 10^5),分别表示 Timur 拥有的糖果数量和你需要回答的问题数量。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1041 \leq a_i \leq 10^4),分别表示每颗糖果的糖分含量。

接下来 qq 行,每行包含一个整数 xjx_j1xj21091 \leq x_j \leq 2 \cdot 10^9),表示 Timur 在该问题中希望达到的糖分总量。

保证所有测试用例中 nn 的总和与 qq 的总和不超过 1.51051.5 \cdot 10^5

输出格式

对于每个测试用例,输出 qq 行。对于第 jj 个问题,输出 Timur 至少需要吃多少颗糖果才能达到糖分不少于 xjx_j,如果无法达到,则输出 1-1

说明/提示

对于第一个测试用例:

对于第一个问题,Timur 吃任意一颗糖果即可达到目标糖分。

对于第二个问题,Timur 可以吃第 77 颗和第 88 颗糖果,总共摄入 1414 单位糖分,达到目标。

对于第三个问题,没有办法达到目标糖分。

对于第四个问题,Timur 可以吃第 77 颗和第 88 颗糖果,总共摄入 1414 单位糖分,达到目标。

对于第二个测试用例:

对于该测试用例的唯一一个问题,我们可以选择第三颗糖果,Timur 恰好摄入 33 单位糖分。也可以选择第四颗糖果,结果相同。

由 ChatGPT 4.1 翻译

样例

3
8 7
4 3 3 1 1 4 5 9
1
10
50
14
15
22
30
4 1
1 2 3 4
3
1 2
5
4
6
1
2
-1
2
3
4
8
1
1
-1

在线编程 IDE

建议全屏模式获得最佳体验