Задание 24. Информатика. ЕГЭ. Шастин. 6.11.2024
- Просмотры: 125
- Изменено: 24 ноября 2024
(Л. Шастин) Текстовый файл состоит не более чем из \(10^8\) символов латиницы, входящих в слово «REVOLUTION». Найдите наименьшую длину подстроки, которая включает в себя подпоследовательность символов, образующих слово «LOVE». Например, для строки REVVVLAAORRVEARRLBOLRVER ответом будет являться число \(7\) — это длина подстроки LBOLRVE. Для выполнения этого задания следует написать программу.
Решение:
Python 3.10+
base = ''
s = open(base + '24.txt').readline().strip()
lpos = []
opos = []
vpos = []
epos = []
for i, c in enumerate(s):
match c:
case 'L':
lpos.append(i)
case 'O':
opos.append(i)
case 'V':
vpos.append(i)
case 'E':
epos.append(i)
llen, olen, vlen, elen = len(lpos), len(opos), len(vpos), len(epos)
l, o, v, e = 0, 0, 0, 0
while opos[o] < lpos[l]:
o += 1
while vpos[v] < opos[o]:
v += 1
while epos[e] < vpos[v]:
e += 1
size = epos[e] - lpos[l] + 1
while l < llen and o < olen and v < vlen and e < elen:
l += 1
while l < llen and o < olen and opos[o] < lpos[l]:
o += 1
while o < olen and v < vlen and vpos[v] < opos[o]:
v += 1
while v < vlen and e < elen and epos[e] < vpos[v]:
e += 1
if l < llen and o < olen and v < vlen and e < elen:
size = min(size, epos[e] - lpos[l] + 1)
print(size)
Ответ: \(2000031\)