eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Магические скобки

Магические скобки

Язык программирования ЛИСП \textit{\textbf{всё}} пишется в сбалансированных скобках (КАК ЭТО). А это значит, что ЛИСП-код иногда содержит длинные отрезки закрывающих скобок "\textbf{)))...)}". Это бывает очень утомительно для ЛИСП-программиста, когда нужно получить такое количество закрывающих скобок '\textbf{)}', которое точно соответствует количеству открытых скобок '\textbf{(}'. Чтобы предотвратить возможные в таких случаях ошибки синтаксиса, в некоторых дилектах языка ЛИСП ввели \textit{\textbf{магическую закрывающую скобку}} '\textbf{\]}', которая заменяет \textit{одну или несколько закрывающих скобок ')' для сбалансирования всех ранее использованных открывающих скобок '}\textbf{(}\textit{'}. Но тогда компилятор ЛИСП должен уметь подсчитывать сколько закрывающих скобок '\textbf{)}' каждая магическая скобка '\textbf{\]}' действительно заменила. Как? Напишите программу, которая получает строку, состоящую из открывающих, закрывающих и магических скобок, и которая подсчитывает для каждого вхождения магической скобки какому количеству открытых скобок она соответствует. В случае наличия нескольких решений программа должна вывести одно из них. \InputFile Первая строка содержит два целых числа \textbf{0} ≤ \textbf{N} ≤ \textbf{10000000} и \textbf{0} ≤ \textbf{M} ≤ \textbf{5000000} разделённых пробелом. Первое число \textbf{N} - это длина входной строки. Второе число \textbf{M} - это количество магических закрывающих скобок в строке. Оставшаяся часть входного файла начинаается во второй строке и содержит информацию о строке длины \textbf{N} и состоит из симовлов '\textbf{(}', '\textbf{)}' и '\textbf{\]}'. Сивол '\textbf{\]}' входит именно \textbf{M} ≤ \textbf{N} раз в эту строку. Эта строка разбита на подстроки длиной не более \textbf{72} символов для удобства чтения. \OutputFile Первая строка содержит число \textbf{0}' или '\textbf{1}'. Число '\textbf{0}' обозначает, что входные данные не могут быть сбалансированы (например, строка, состоящая из одной единственной закрывающей магической скобки "\textbf{\]}" очевидно, что не может быть сбалансирована). В этом случае больше ничего не выводится. Число '\textbf{1}' означает, что входные данные могут быть сбалансированы. В этом случае в выходных данных содержится \textbf{M} дополнительных строк. Первая допополнительная строка содердит число \textbf{C_1} ≥ \textbf{1} показывающее, сколько закрывающих скобок '\textbf{)}' заменяет \textbf{1}-я магическая скобка '\textbf{\]}' во входных данных. \textbf{2}-я дополнительная строка содержит соответствующее число \textbf{C_2} ≥ \textbf{1} для \textbf{2}-й магической закрывающей скобки '\textbf{\]}' во входных данныхз и т.д.. Если есть много способов, которыми данная строка может быть сбалансирована, ваша программа должна вывести один из них. \Note Пример входных данных описывает строку из \textbf{8} симовлов, из которыз \textbf{2} магические. Выходные данные содержат один из способов балансировки этой входной строки: первая магическая скобка соответствует \textbf{3}-м открываюзщим скобкам, а вторая - \textbf{1}-й открывающей скобке. И действительно в этом случае строка \textbf{( ( ((( ))) ) )} является правильно сбалансированной, и закрывающие скобки соответствуют нужному количеству закрывающих скобок, соответсвующие закрывающие символы подчёркнуты.
Лимит времени 1 секунда
Лимит использования памяти 32 MiB
Входные данные #1
8 2
(((((])]
Выходные данные #1
1
3
1
Источник BOI-2005