#P2895. 第2题-游戏中最后玩家的生命值

第2题-游戏中最后玩家的生命值

题目内容

有一款游戏,里面有NN个游戏玩家 (1<=N<100000)(1<=N<100000),每个玩家都有一个初始的生命能量值lifePower(0<=lifePower<=2311)lifePower(0<=lifePower<=2^{31-1})

游戏规则:经过多玩家1111 PKPK 直到游戏结束,每一轮PKPK都是从游戏中尚存的所有玩家中挑选生命能量值最小且不为0022个玩家进行PKPK(如果在挑选符合PKPK条件的22个玩家过程中,能量值相同的候选玩家有多个时,则挑选玩家编号小的玩家参与PKPK),如是两个玩家的生命能量值相同,则22个玩家同归于尽,生命能量值都归为00PKPK后都退出游戏;如果22个玩家的生命能量值不同,则能量值大的玩家胜出,PKPK过程胜出玩家会消耗掉另一个玩家的同等数量的生命能量值,但是PKPK胜出后,则剩余生命能量值会膨胀33倍(最大不超过3232位有符号整数的最大值即 23112^{31}-1),即为该玩家最终的生命能量值为剩余生分能量值的33倍。PKPK胜出的玩家仍可继续游戏;

如果游戏无法挑选出22个符合条件的玩家进行PKPK时,游戏结束;

请设计一个高效的算法,让游戏按规则进行玩家PK,直到游戏结束。