Hello 2019 |
---|
Закончено |
Однажды Yuhao попалась задача о проверке скобочной последовательности на правильность.
Скобочная последовательность называется правильной скобочной последовательностью, если её можно превратить в корректное математическое выражение, вставив в неё некоторое количество символов «+» и «1». Например, последовательности «(())()», «()» и «(()(()))» являются правильными, а «)(», «(()» и «(()))(» — нет.
Yuhao решил, что эта задача является слишком простой, так что он придумал такую задачу. Вам дано несколько (не обязательно правильных) скобочных последовательностей. Вам нужно соединить некоторые из них в упорядоченные пары так, чтобы каждая скобочная последовательность встречалась не более чем в одной паре, а конкатенация скобочных последовательностей в каждой паре была правильной скобочной последовательностью. Нужно создать как можно больше пар.
Эта задача оказалась слишком сложной для Yuhao. Можете ли вы помочь ему и решить её?
Первая строка содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 10^5$$$) — количество скобочных последовательностей.
Каждая из следующих $$$n$$$ строк содержит одну непустую строку, состоящую из символов «(», «)».
Сумма длин всех скобочных последовательностей не превосходит $$$5 \cdot 10^5$$$.
Обратите внимание, что одна и та же строка может быть перечислена во входных данных несколько раз. В таком случае вы можете использовать каждую из ее копий независимо. Также обратите внимание, что порядок, в котором перечислены строки, не имеет значения.
Выведите одно целое число — максимальное возможное количество пар, которое можно составить.
7 )()) ) (( (( ( ) )
2
4 ( (( ((( (())
0
2 (()) ()
1
В первом примере, оптимально составить пары «(( )())» и «( )».
Название |
---|