#CF2037F. 炽焰之焰
炽焰之焰
F. 炽焰之焰
每次测试时间限制:4 秒
每次测试内存限制:256 兆字节
你获得了新的限时活动角色 Xilonen。你决定让她投入战斗。
战场上有 个敌人排成一条直线。从左数第 个敌人的生命值为 ,当前位于位置 。
Xilonen 的攻击力为 ,你准备好用她击败敌人。
Xilonen 有一个强大的 “踩地”攻击。在开始任何攻击之前,你选择一个整数 ,将 Xilonen 置于该位置( 可以是任意整数位置,包括有敌人所在的位置)。
之后,每次攻击:
- 她对位置 的敌人造成 点伤害(如果该位置有敌人);
- 对位置 和 的敌人造成 点伤害;
- 对位置 和 的敌人造成 点伤害;
- 以此类推。
距离 Xilonen 至少 远的敌人本次攻击不受伤害。
形式化地说:若敌人在位置 ,则每次攻击对其造成 点伤害。
注意:你不能在不同的攻击中选择不同的 。
在所有可能的 中,输出为了击败 至少 个敌人,Xilonen 必须发动的最小攻击次数。
如果不存在任何 能最终击败至少 个敌人,输出 。
敌人生命值 即视为被击败。
输入
第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含三个整数 (,)。
接下来一行包含 个整数 ()。
最后一行包含 个整数 (, 对所有 成立)。
保证所有测试用例的 之和不超过 。
输出
对每个测试用例,输出一行一个整数,表示击败至少 个敌人所需的最少攻击次数。
如果不可能,输出 。
示例
输入
6
5 5 3
7 7 7 7 7
1 2 3 4 5
9 5 9
2 4 6 8 10 8 6 4 2
1 2 3 4 5 6 7 8 9
2 10 2
1 1
1 20
2 10 1
69696969 420420420
1 20
2 10 2
10 15
1 19
2 2 2
1000000000 1
1 3
输出
2
2
-1
6969697
15
1000000000
样例解释
-
第一个测试用例:最优选 。每次攻击,敌人 受到 伤害,敌人 受到 伤害,敌人 受到 伤害,敌人 受到 伤害,敌人 受到 伤害。
两次攻击后,前三个敌人被击败。可以证明,无论选哪个 ,都无法在少于 次攻击内击败 个敌人。 -
第二个测试用例:必须击败全部 个敌人。选 ,所有敌人在 次攻击内被击败。
-
第三个测试用例:必须击败两个敌人,但可以证明无论选哪个 ,都不能同时伤害到两个敌人,所以输出 。
-
第四个测试用例:选 ,可以在 次攻击内击败第一个敌人。
-
第五个测试用例:选 ,每次攻击每个敌人受 点伤害。两个敌人都在 次攻击内被击败。