#P1005. Eating Queries
Eating Queries
帖木儿有 颗糖果。第 颗糖果的糖量等于 。因此,吃下第 颗糖果,帖木儿消耗的糖的数量等于 。
帖木儿会就他的糖果向你提出 个问题。对于第 个查询,你必须回答他需要吃多少颗糖果才能达到大于或等于 的糖量,如果不可能达到这样的糖量,则打印 -1
。换句话说,你应该打印出最小可能的 ,使得在吃了 颗糖果后,帖木儿消耗的糖量至少为 ,或者不存在可能的 。
请注意,他不能两次吃同一种糖果,而且查询是相互独立的(帖木儿可以在不同的查询中使用同一种糖果)。
【输入格式】
从文件 b.in 中读入数据。
- 第一行包含一个整数 (1 ≤ ≤ 1000) -- 测试用例数。
- 对于每个测试用例:
- 第一行包含两个整数 和 (1 ≤ , ≤ 1.5⋅10⁵) -- 分别是帖木儿拥有的糖果数量和查询次数。
- 第二行包含 个整数 (1 ≤ ≤ 10⁴) -- 每颗糖果的糖量。
- 接下来的 行,每行包含一个整数 (1 ≤ ≤ 2⋅10⁹) -- 即帖木儿希望达到的糖量。
【输出格式】
- 对于每个查询,输出帖木儿需要吃多少颗糖果才能使糖量大于或等于 。如果不可能获得这样的数量,则输出
-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
### 【样例解释】
#### 示例 1:
- **第 1 次查询**:帖木儿可以吃任何糖果,即可达到所需的糖量,故答案为 `1`。
- **第 2 次查询**:帖木儿可以通过吃第 7 颗糖果(糖量为 5)和第 8 颗糖果(糖量为 9),达到至少 10 的糖量,总糖量为 14,故答案为 `2`。
- **第 3 次查询**:没有可能的组合能使糖量达到 50,故答案为 `-1`。
- **第 4 次查询**:帖木儿可以通过吃第 7 颗和第 8 颗糖果,达到至少 14 的糖量,总糖量为 14,故答案为 `2`。
#### 示例 2:
- **第 1 次查询**:我们可以选择第三颗糖果,这样铁木尔就可以从中得到恰好 3 的糖。选择第四种糖果也可以得到相同的答案。
### 数据范围
* 对于20%的数据 $1 \leq t, n, q \leq 100$
* 对于50%的数据 $1 \leq t, n, q \leq 1 \times 10^4$
- 对于所有测试用例:
- $(1 \leq t, n, q \leq 1.5 \times 10^5)$ —— 每个测试用例中的糖果数量和查询次数。
- $(1 \leq a_i \leq 10^4)$ —— 每颗糖果的糖量。
- $(1 \leq x_j \leq 2 \times 10^9)$ —— 每个查询所需达到的糖量。
- 测试用例中的 $n$ 和 $q$ 的总和不超过 $(1.5 \times 10^5)$。
相关
在下列比赛中: