Вам задана скобочная последовательность, состоящая из $$$n$$$ символов '(' и/или )'. Вы производите над ней последовательность операций.
В течение одной операции вы выбираете кратчайший префикс этой строки (какое-то количество первых символов строки), который является хорошим, и удаляете его из строки.
Префикс считается хорошим, если выполняется одно из следующих двух условий:
Скобочная последовательность называется правильной, если из нее возможно получить корректное арифметическое выражение вставкой символов '+' и '1' в эту последовательность. Например, последовательности (())(), () и (()(())) являются правильными, когда )(, (() и (()))( ими не являются.
Скобочная последовательность называется палиндромом, если она читается одинаково и вперед и назад. Например, скобочные последовательности )), (( и )(() являются палиндромами, а скобочные последовательности (), )( и ))( ими не являются.
Вы прекращаете производить операции тогда, когда невозможно найти ни одного хорошего префикса. Ваша задача — найти количество операций, которые вы произведете, а также количество оставшихся в строке символов после всех операций.
Вам необходимо ответить на $$$t$$$ независимых наборов тестовых данных.
Первая строка входных данных содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов тестовых данных. Следующие $$$2t$$$ строк описывают сами наборы.
Первая строка набора содержит одно целое число $$$n$$$ ($$$1 \le n \le 5 \cdot 10^5$$$) — длину скобочной последовательности.
Вторая строка набора содержит $$$n$$$ символов '(' и/или ')' — саму скобочную последовательность.
Гарантируется, что сумма $$$n$$$ по всем наборам тестовых данных не превышает $$$5 \cdot 10^5$$$ ($$$\sum n \le 5 \cdot 10^5$$$).
На каждый набор тестовых данных выведите два целых числа $$$c$$$ и $$$r$$$ — количество операций, которые вы произведете над данной скобочной последовательностью и количество оставшихся в ней символов после всех операций.
5 2 () 3 ()) 4 (((( 5 )((() 6 )((()(
1 0 1 1 2 0 1 0 1 1
Название |
---|