Максимальная подпоследовательность длиной не менее L элементов, сумма которых кратна K

Я не знаю как находить подотрезки длиной l. Я иду по отрезку, нахожу число, которое со всеми элементами до имеют длину подотрезка больше l. Соответственно, я могу вычесть подотрезок, сумма элементов которого кратна k и который имеет длину, вычитая которую получу подотрезок с количеством элементов не менее k. Но, кажется, это не особо работает. Интересует реализация. Писать я начала следующее:

def subarray():
    n = int(input())
    l = int(input())
    k = int(input())
    c = [10**9] * k
    sum = 0
    for i in range(n):
        s = int(input())
        sum += s
        if sum % k == 0 and 

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

Автор решения: MBo
 m = sum % k
 if c[m] == 10**9:
     c[m] = i  #запомнили индекс, на котором впервые встретилось данное значение
 else:
     llen = i - c[m]
     if llen >= L:
         maxlen = max(maxlen, llen) 
     
→ Ссылка