Код:
2# кол списков
3 99 99 99 99 # первое число кол элементов в списке -1
2 33 33 33
import math
log_2 = math.log(2) # для оптимизации вывел сюда
h = {}
i = 0
for _ in range(int(input())):
s = input()[2:]
s = s.split()
if '1' in s: # удаляю первое число и елиницы такой список 2 2 1 99 станет 2 1
s = s[:s.index('1') + 1]
s = list(map(float, s)) # для ускорения
if len(s) == 1: # три случая если длина 1
acc = -9
s = []
elif len(s) == 2: # если длина 2
v1, v2 = s
acc = math.log(v2) / log_2+math.log(math.log(v1) / log_2)
s = []
else: # общий случай
*s, v1, v2, v3 = s
acc = v3 * math.log(v2) / log_2 + math.log(math.log(v1) / log_2)
for n, it in enumerate(reversed(s)): # если цифр много до раскрываю
if acc > 190:
break
acc = (2 ** acc) + math.log(math.log(float(s[-1])) / log_2) / log_2
del s[-1]
acc = round(acc, 10)
a = [int(item) for item in s]
a.append(acc)
a.reverse()
h[i] = [float(item) for item in a] # заполняю словарь списком
s = []
a = []
# print(h[i])
i += 1
sorted_list = sorted(h.items(), key=lambda x: (len(x[1]), x[1])) # сортирую
print(' '.join(str(i + 1) for i, _ in sorted_list)