今天是元旦,每个人都在排队玩仙境过山车!有很多人在排队,每个人都戴着一个贴纸,指示他们在队列中的初始位置。初始位置从行首的1到行尾的n递增1。
队列中的任何人都可以贿赂在他们前面的人以交换职位。如果两个人调换职位,他们仍然会贴上相同的标签,以表示他们原先的位置。一个人最多可以贿赂另外两个人。 例如,如果n = 8并且第5个人贿赂第4个人,则队列将如下所示:1,2,3,5,4,6,7,8
打印一个整数,该整数表示使队列进入最终状态所需的最少贿赂数量。如果状态无效,即要求一个人贿赂超过2个人,则打印太混乱
我尝试了以下代码,但在较大的测试用例中超时
#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the minimumBribes function below.
def minimumBribes(Q):
bribe=0
for _ in range(len(q)):
max_index = q.index(max(q))
q_len = len(q)
if max_index + 3 < q_len:
return("Too chaotic")
if max_index + 2 < q_len:
bribe += 2
del q[max_index]
elif max_index + 1 < q_len:
bribe += 1
del q[max_index]
elif max_index == q_len - 1:
del q[max_index]
return(bribe)
if __name__ == '__main__':
t = int(input())
for t_itr in range(t):
n = int(input())
q = list(map(int, input().rstrip().split()))
print( minimumBribes(q))
sample input:
2
5
2 1 5 3 4
5
2 5 1 3 4
sample output:
3
Too chaotic