切磋

Description 在漫长的旅途中,芙莉莲有时会与旅伴们进行魔力比试。这一次,她遇到了 n 位实力各异的冒险者,每位冒险者都有一个固定的魔力值 ai。芙莉莲当前的魔力值为 x,目标是练到魔力值 y(显然 y > x)。 每当芙莉莲和任意一位冒险者切磋: 1. 如果芙莉莲当前魔力 ≥ 冒险者魔力,她会获胜,魔力值+1; 2. 否则,她会失败,魔力值−1; 3. 冒险者的魔力不会发生变化。 然而,芙莉莲不能一直挑弱的对手修行有修行的规矩:她必须和所有对手尽量平均地切磋。 具体来说:如果她想选择与对手 i 切磋,则不能存在另一位对手 j 使得:她与 i 的切磋次数 > 她与 j 的切磋次数 也就是说:在整个过程中,芙莉莲对每位对手的切磋次数最多只能相差 1。她必须“轮流”挑战这些对手。 请你计算:芙莉莲最少需要切磋多少次,才能让魔力值从 x 提升到 y?如果无论怎样修行都无法达到目标,请输出 -1。 Input 每个测试包含多个测试用例。第一行包含测试用例的数量 t (1 ≤ t ≤ 104)。测试用例说明如下。 每个测试用例的第一行包含三个整数 n, x, y (1 ≤ n ≤ 2 × 105,1 ≤ x < y ≤ 1012) 每个测试用例的第二行包含 n 个整数 a1, a2, …, an (1 ≤ ai ≤ 1012) 保证所有测试用例中 n 的总和不超过 2 × 105。 Output 对每个测试,输出一个整数:芙莉莲达到魔力值 y 所需的最少切磋次数;或者,如果无法达到目标,输出 -1。 Sample Input 3 7 2 10 3 1 9 2 5 20 8 7 1 10 3 1 9 2 5 20 8 5 10 12 100 1 200 11 300 Sample Output 20 -1 2 Hint 对于样例的第一组测试用例: 芙莉莲与第 2 位冒险者切磋并提升魔力(2→3); 芙莉莲与第 1 位冒险者切磋并提升魔力(3→4); 芙莉莲与第 4 位冒险者切磋并提升魔力(4→5); 芙莉莲与第 5 位冒险者切磋并提升魔力(5→6); 现在芙莉莲必须与剩下的三位冒险者切磋。因此,她会连续失败 3 次,魔力变为 3(6→5→4→3); 之后,芙莉莲会再次重复步骤 1–5。经过 14 次切磋,她已经与每位冒险者都切磋了两次,最终魔力变为 4。 芙莉莲与第 1 位冒险者切磋并提升魔力(4→5); 芙莉莲与第 2 位冒险者切磋并提升魔力(5→6); 芙莉莲与第 4 位冒险者切磋并提升魔力(6→7); 芙莉莲与第 5 位冒险者切磋并提升魔力(7→8); 芙莉莲与第 7 位冒险者切磋并提升魔力(8→9); 芙莉莲与第 3 位冒险者切磋并提升魔力(9→10)。C++做一遍
最新发布
12-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值