Kotlin Heroes: Episode 8 |
---|
Закончено |
Правильная скобочная последовательность — это скобочная последовательность, которую можно превратить в корректное арифметическое выражение, вставив символы «1» и «+» между исходными символами. Например:
Вам даны две строки $$$s$$$ и $$$a$$$, длина строки $$$s$$$ равна $$$n$$$, длина строки $$$a$$$ равна $$$n - 3$$$. Строка $$$s$$$ — скобочная последовательность (т. е. каждый элемент этой строки — либо символ открывающей скобки, либо символ закрывающей скобки). Строка $$$a$$$ — бинарная (т. е. каждый элемент этой строки — либо 1, либо 0).
Строка $$$a$$$ вводит ограничения на строку $$$s$$$: для каждого $$$i$$$, такого, что символ $$$a_i$$$ — это 1, строка $$$s_i s_{i+1} s_{i+2} s_{i+3}$$$ должна быть правильной скобочной последовательностью. Символы строки $$$a$$$, равные 0, не вводят никаких ограничений.
Изначально строка $$$s$$$ может не удовлетворять этим ограничениям. Чтобы это исправить, можно проводить следующую операцию любое кол-во раз: заменить некоторый символ $$$s$$$ скобкой другого типа (то есть можно менять открывающие скобки на закрывающие и наоборот).
Определите, можно ли поменять некоторые символы в $$$s$$$ таким образом, что она будет удовлетворять всем ограничениям, и если это возможно, посчитайте минимальное кол-во символов, которые надо заменить.
В первой строке задано одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных.
Каждый набор входных данных состоит из трех строк. В первой строке задано одно целое число $$$n$$$ ($$$4 \le n \le 2 \cdot 10^5$$$). Во второй строке задана строка $$$s$$$ из ровно $$$n$$$ символов; каждый символ $$$s$$$ — либо «(», либо «)». В третьей строке задана строка $$$a$$$ из ровно $$$n - 3$$$ символов; каждый символ $$$a$$$ — либо «1», либо «0».
Дополнительное ограничение на входные данные: сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$.
Для каждого набора входных данных выведите одно целое число: минимальное количество символов, которое нужно поменять в $$$s$$$, или $$$-1$$$, если все ограничения выполнить невозможно.
6 4 ))(( 1 4 ))(( 0 4 ()() 0 6 ))(()( 101 6 ))(()( 001 5 ((((( 11
2 0 0 4 1 -1
Название |
---|