Решение
🔹 Шаг 1. Считываем строку из файла
s = open("24_28765.txt").read()
📌 Что происходит:
Имя файла в коде: 24_28765.txt.
🔹 Шаг 2. Подготавливаем переменные
l = 0
bc = 0
ans = 0
📌 Назначение переменных:
l — левая граница текущего фрагмента (окна);
bc — количество пар BC внутри текущего фрагмента;
ans — максимальная длина подходящего фрагмента.
🔹 Шаг 3. Двигаем правую границу окна
for r in range(1, len(s)):
📌 Что происходит:
🔹 Шаг 4. Учитываем новую пару справа
if s[r-1:r+1] == 'BC':
bc += 1
📌 Объяснение:
при добавлении нового символа справа проверяем, образовалась ли новая пара BC;
если да — увеличиваем счётчик bc.
🔹 Шаг 5. Сужаем окно при нарушении условия
while bc > 180:
if s[l:l+2] == 'BC':
bc -= 1
l += 1
📌 Что происходит:
если в окне больше 180 пар BC, оно недопустимо;
сдвигаем левую границу l вправо;
если при этом исчезла пара BC, уменьшаем bc.
🔹 Шаг 6. Обновляем максимальный ответ
ans = max(ans, r - l + 1)
📌 Почему так:
🔹 Шаг 7. Вывод результата
print(ans)
📌 Это и есть ответ задачи — максимальное количество идущих подряд символов, в которых пара BC встречается не более 180 раз.