Решение задачи Подстрока с Яндекс Контест

Без пояснения   Просмотров: 2046


В этой задаче Вам требуется найти максимальную по длине подстроку данной строки, такую что каждый символ встречается в ней не более k раз.


Код

n, m = map(int, input().split())
s = input()
dict, main = {}, {}
idx, ln = 0, 0
for i in s:
    dict[i] = 0
    main[i] = m
pos = 0
for i in range(len(s)):
    dict[s[i]] += 1
    b = 1
    sm = 0
    for j in dict:
        sm += dict[j]
        if dict[j] > main[j]:
            b = 0
            break
    if b:
        if sm > ln:
            ln = sm
            idx = i + 1 - ln
    else:
        dict[s[pos]] -= 1
        pos += 1
        b = 0
        for j in dict:
            sm += dict[j]
            if dict[j] > main[j]:
                b = 0
                break
        if b:
            if sm > ln:
                ln = sm
                idx = i + 1 - ln
print(ln, idx + 1)

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет