先将所有对手等级排序,记为 a[0..n-1]。
由于每次只能选择“当前被挑战次数最少”的对手,所以整个过程实际上是按“轮”进行的:
n 个对手各打一次;在一个虚拟的游戏世界中,小明参加了一场在线比赛,这场比赛要求他与n个对手进行对战,以提高自己的等级。然而,比赛有着一些独特的规则和挑战。
小明的目标很明确:他希望将自己的等级从初始等级x提升到更高的等级y(y > x)。
在比赛中,如果小明的等级大于等于对手的等级,他就能够获胜,并提升1级。但如果小明输掉了比赛,他将减少1级。对手的等级始终保持不变,不受比赛结果的影响。
比赛有一条特殊规则:每局比赛小明只能选择和对战次数最少的对手进行对战。
小明面临的挑战是,在保证按照规则选择对手的情况下,以尽可能少的比赛次数提升自己的等级。他需要计算出实现这一目标所需的最少比赛次数,以达到他渴望的更高等级y。
第一行包含三个整数n,x和y(1≤n≤2×105,1≤x<y≤1012)表示对手个数,小明的初始等级和期望等级。
第二行包含n个整数a1,a2,a3,...,an(1≤ai≤1012)表示对手的等级。
输出小明提升到等级y所需的最少对战数,如果不可能达到目标,则输出−1。
7 2 10
3 1 9 2 5 20 8
20