在一个虚拟游戏中,塔子哥的目标是将初始等级x提升到更高的等级y(y > x),与n个对手对战。每当他的等级大于或等于对手的等级时,他就获胜并提升1级,反之则降低1级。塔子哥必须选择与对战次数最少的对手进行比赛。任务是计算他达到目标等级y所需的最少对战次数,若无法实现则输出-1。输入包括n、x、y和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