В свободное от учебы время Даша очень любит смотреть мультсериалы, снятые по комиксам. Она уже выбрала мультсериал для просмотра, но есть одна проблема. Достаточно часто в экранизациях комиксов серии снимают не последовательно по хронологии событий, а в каком-то странном порядке. Чтобы избавить себя от путаницы, Даша решила, что выберет и посмотрит ровно три серии, причем так, чтобы номера этих серий шли в возрастающем порядке и годы, в которые происходят события в сериях, тоже шли в возрастающем порядке. Для каждой серии известно, в каком году происходят события этой серии Даше найти три подходящие серии для просмотра.
import bisect
n = int(input())
a = [int(input()) for i in range(n)]
INF = 10 ** 9
dp = [0] + [INF] * n
prev = [0] * (n + 1)
for elem in a:
i = bisect.bisect_left(dp, elem)
if dp[i] > elem:
dp[i] = elem
prev[i] = dp[i - 1]
if dp[3] == INF:
print(0)
else:
k = n - 1
while a[k] != dp[3]:
k -= 1
j = k - 1
while a[j] != prev[3]:
j -= 1
i = j - 1
while a[i] >= a[j]:
i -= 1
print(i + 1, j + 1, k + 1)
Объяснение: