В свободное от учебы время Даша очень любит смотреть мультсериалы, снятые по комиксам. Она уже выбрала мультсериал для просмотра, но есть одна проблема. Достаточно часто в экранизациях комиксов серии снимают не последовательно по хронологии событий, а в каком-то странном порядке. Чтобы избавить себя от путаницы, Даша решила, что выберет и посмотрит ровно три серии, причем так, чтобы номера этих серий шли в возрастающем порядке и годы, в которые происходят события в сериях, тоже шли в возрастающем порядке. Для каждой серии известно, в каком году происходят события этой серии Даше найти три подходящие серии для просмотра.

usereldoc9857 usereldoc9857    1   20.12.2021 05:22    24

Ответы
lili2018 lili2018  20.12.2021 06:00

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)

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика