Задача №114301. Маршрут для трекинга

Это ЛИНЕЙНЫЙ алгоритм, у меня по времени не проходит, объясните пожалуйста почему?

Сейчас самое время планировать новые трекинговые маршруты.

Опишем холмистую местность массивом из n чисел. Высота i-го холма равна hi. Маршрут должен идти по k подряд идущим холмам (учитывая тот холм, с которого маршут будет начинаться). Немолодым туристам не очень нравится, когда приходится много раз подниматься в гору - переходить с более низкого холма на более высокий.

Помогите разработать маршрут по k подряд идущим холмам слева направо, на котором количество подъемов будет минимальным. В качестве ответа требуется вывести минимальное возможное количество подъемов на таком маршруте.

Входные данные
В первой строке даны натуральные числа n и k (2≤k≤n≤2⋅105) - общее количество холмов и количество холмов в маршруте, соответственно.
Во второй строке даны n целых чисел hi (1≤hi≤105) - высоты холмов.

Напоминаем, что два числа из одной строки в языке Python можно считать так: n, m = map(int, input().split())

Выходные данные
Выведите ответ на задачу.

Примечание
В первом примере можно начать с первого, второго или третьего холма, во втором примере - с третьего холма.

Вот мои наработки: '''

n, k = map(int, input().split())
arr = list(map(int, input().split()))
min_up = 32000
upper = 0
new_list = []
help_list = arr[:k]
for i in range(1, k):
    if help_list[i - 1] < help_list[i]:
        upper += 1
if upper < min_up:
    min_up = upper
for i in range(1, n - k + 1):
    if help_list[0] < help_list[1]:
        upper -= 1
    help_list = help_list[1:]
    help_list.append(arr[i+k-1])
    if help_list[-2] < help_list[-1]:
        upper += 1
    if upper < min_up:
        min_up = upper
print(min_up)

'''


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

Автор решения: Максим
n, k = map(int, input().split())
arr = list(map(int, input().split()))
min_up = 3200000000
upper = 0
index_1 = 0
for i in range(k - 1):
    if arr[i + 1] > arr[i]:
        upper += 1
if upper < min_up:
    min_up = upper
for i in range(k - 1, n - 1):
    if arr[index_1] < arr[index_1 + 1]:
        upper -= 1
    if arr[i] < arr[i + 1]:
        upper += 1
    index_1 += 1
    if upper < min_up:
        min_up = upper
print(min_up)
→ Ссылка