Проблема с определением последовательности на Python

Вводится список чисел, найти в нем самую длинную неубывающую цепочку чисел, в которой каждый элемент не превосходит 50. Я решил так, но не при всех вводных данных оно считает правильно (например, при последовательности 2 3 1 3 4 5 6 3 2 1 выводит верно, в остальных случаях - нет). У меня вся программа не на той логике построена или где-то незначительная ошибка?

import copy
a = []
n = int(input())
for i in range(n):
    a.append(int(input()))
max_len, current_len = 1, 1
spis1 = []
spis2 = []
for i in range(1, len(a)):
    if a[i] >= a[i - 1] and a[i] < 50:
        current_len += 1
        max_len = max(max_len, current_len)
        spis1.append(a[i - 1])
        spis2 = spis1.copy()
        c = a[i]
    else:
        current_len = 1
        spis1.clear()
if spis1 != spis2:
    spis2.append(c)
    print(spis2)
else:
    spis1.append(c)
    print(spis1)

Ответы (1 шт):

Автор решения: MBo

current_len нужно назначать 1 только в случае, если элемент не превосходит 50.

Не вижу смысла хранить целый список с хорошей последовательностью - достаточно знать место и длину.

import random
a = [random.randint(20,55) for _ in range(random.randint(5,15))]
print(a)
if a[0] <= 50:
    max_len, current_len, max_end = 1, 1, 0
else:
    max_len, current_len, max_end = 0, 0, -1

for i in range(1, len(a)):
    if (a[i] >= a[i - 1]) and (a[i] <= 50):
        current_len += 1
        if current_len > max_len:
            max_len = current_len
            max_end = i
    else:
        current_len = 1 if a[i] <= 50 else 0
        if current_len > max_len:
            max_len = current_len
            max_end = i
if max_len:
    print(max_len, a[max_end - max_len + 1: max_end+1])
→ Ссылка