Это Новый год, и все в очереди на катание на американских горках! Есть несколько человек, стоящих в очереди, и каждый человек носит наклейку, указывающую их начальную позицию в очереди. Начальные позиции увеличиваются на 1 с 1 в передней части строки до n в задней части.
Любой человек в очереди может подкупить человека прямо перед собой, чтобы поменяться местами. Если два человека меняются местами, они все равно носят одну и ту же наклейку, обозначающую их первоначальные места в очереди. Один человек может подкупить не более двух других.
Например, если n = 8 и Person 5 подкупит Person 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