Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 24. Информатика. ЕГЭ. Поляков-7744
- Просмотры: 214
- Изменено: 21 января 2026
(К. Багдасарян) Текстовый файл состоит не более чем из \(10^6\) символов и содержит только десятичные цифры, знаки арифметических операций, а также круглые, квадратные и фигурные скобки: «\((\)», «\()\)», «\([\)», «\(]\)», «\(\{\)», «\(\}\)». Назовем выражение корректным, если:
- оно начинается с открывающей скобки и заканчивается парной ей закрывающей скобкой того же типа;
- скобки внутри выражения сбалансированы, т.е.:
- для каждой открывающей скобки есть закрывающая того же типа;
- скобки открываются и закрываются в правильном порядке.
Примеры корректных выражений: \([\{1+2\}(3+++4)],\) \([(1***2)\{3\}45]\)
Примеры некорректных выражений:
- \((1+2])\) – (лишняя закрывающая скобка \(]\));
- \((1+2]\) – (открывающая и закрывающая скобки не соответствуют друг другу).
Определите максимальное количество символов в непрерывной последовательности текста, которая представляет собой корректное выражение. Гарантируется, что в тексте присутствуют корректные выражения. В ответе укажите количество символов.
Решение:
Python
s = open('7744.txt').readline().strip()
brackets = '([{}])'
op_brackets = '([{'
d = {'(': (0, 1), ')': (0, -1), '[': (1, 1), ']': (1, -1), '{': (2, 1), '}': (2, -1)}
mlen = 0
ls = len(s)
p = 0
st = [0, 0, 0]
while s[p] not in op_brackets:
p += 1
while p < ls:
b = p
pos, step = d[s[p]]
fbr = pos
st[pos] += step
p += 1
f = True
while p < ls and st[fbr]:
if s[p] in brackets:
pos, step = d[s[p]]
st[pos] += step
p += 1
if any(x < 0 for x in st):
f = False
break
if f and all(x == 0 for x in st):
mlen = max(mlen, p - b)
st = [0, 0, 0]
while p < ls and s[p] not in op_brackets:
p += 1
print(mlen)
Ответ: \(59\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


