Решение
Окно
🔹 Шаг 1. Читаем строку из файла и задаём накопитель текущего фрагмента, счётчик…
s = open("24_T0uEHe0.txt").readline()
c = ""
k = 0
m = 10**6
📌 Читаем строку из файла и задаём накопитель текущего фрагмента, счётчик вхождений «ABC» и большое начальное значение для минимальной длины.
🔹 Шаг 2. Обходим строку слева направо
for r in range(len(s)):
c += s[r]
if c[-3:] == "ABC":
k += 1
📌 Обходим строку слева направо: добавляем символ в накопитель и увеличиваем счётчик, если справа появилось «ABC».
🔹 Шаг 3. Когда фрагмент оканчивается на C, сжимаем его слева, пока в нём не…
if c[-1] == "C":
while k >= 110:
if k == 110:
m = min(m, len(c))
if c[:3] == "ABC":
k -= 1
c = c[1:]
📌 Когда фрагмент оканчивается на C, сжимаем его слева, пока в нём не останется ровно 110 вхождений «ABC», и запоминаем минимальную длину.
🔹 Шаг 4. Продолжаем обход до конца строки
📌 Продолжаем обход до конца строки — на каждом подходящем фрагменте, оканчивающемся на C, обновляем ответ.
🔹 Шаг 5. Жми RUN
print(m)
📌 Жми RUN — в выводе будет минимальная длина подходящей последовательности (467).
✅ Ответ: 467
🔹 Полный код
s = open("24_T0uEHe0.txt").readline()
c = ""
k = 0
m = 10**6
for r in range(len(s)):
c += s[r]
if c[-3:] == "ABC":
k += 1
if c[-1] == "C":
while k >= 110:
if k == 110:
m = min(m, len(c))
if c[:3] == "ABC":
k -= 1
c = c[1:]
print(m)