시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 1024 MB140543239.506%

문제

극지 연구소에서 연구 중인 협이는 저번에 북극곰이 괄호를 찢는다는 특성을 알아낸 후 괄호로 여러가지 실험을 하고 있었다. 연구를 하다가 잠깐 쉬고 온 협이는 실험 중이던 괄호가 바뀐 것을 알아차렸다. 범인을 찾기 위해 CCTV를 찾아본 결과 북극여우가 괄호들을 뒤집었다는 사실을 알아냈다. 북극에 사는 동물의 새로운 특성에 신이 난 협이는 북극여우가 어떤 습성을 가지고 있는지 관찰하려 한다. 올바른 괄호 쌍의 개수와 북극여우와 관계가 있을 것이라 생각한 협이는 관찰 결과를 통해 올바른 괄호 쌍이 몇 개 있는지 세어보려 한다.

올바른 괄호 쌍의 개수는 연속된 “()”인 쌍 하나를 지우고 남은 문자열을 붙이는 연산을 재귀적으로 진행했을 때, “()”인 쌍을 최대로 제거하는 횟수가 올바른 괄호쌍의 개수이다.

문자열 $S$가 주어질 때, 북극여우는 다음 $3$가지 행동을 할 수 있다. $l$, $r$이 주어졌을 때, $l \le i \le r$인 $i$에 대해서

  • $1$ $l$ $r$: 모든 $i$에 대해 $s_i$가 ‘(’ 이면 ‘)’으로, ‘)’이면 ‘(’ 로 바꾼다.
  • $2$ $l$ $r$: 모든 $i$에 대해 문자 $s_i$의 위치를 $s_{r+l-i}$으로 옮긴다.
  • $3$ $l$ $r$: 부분 문자열 $s_l, s_{l + 1}, \cdots, s_r$을 $180$도만큼 회전시킨다.

그리고 협이는 북극여우가 행동하는 중에, 임의의 구간 $[l,r]$에 대하여 올바른 괄호 쌍의 개수를 질문할 수 있다.

  • $4$ $l$ $r$: 부분 문자열 $s_l, s_{l + 1}, \cdots, s_r$에서 올바른 괄호 쌍의 개수를 알려준다.

위 네 개의 질의를 순서대로 처리하며 올바른 괄호 쌍의 개수가 몇 개인지 알려주자.

입력

첫 줄에 괄호 문자열 $S$의 길이 $N$과 질의의 개수 $Q$가 공백으로 구분되어 주어진다. $(1 \leq N= \lvert S \rvert \leq 1\,000\,000;$ $1 \leq Q \leq 20\,000)$

둘째 줄에 길이가 $N$이고 ‘(’ 또는 ‘)’로 이루어진 공백 없는 문자열 $S$가 주어진다.

셋째 줄부터 $Q$개의 줄에 걸쳐 질의의 정보 $t$, $l$, $r$가 공백으로 구분되어 주어진다. $(1 \leq t \leq 4;$ $1 \leq l \leq r \leq N)$

$4$번 질의는 하나 이상 주어지며, 입력으로 주어지는 수는 모두 정수이다.

출력

$4$번 질의에 대한 답을 한 줄에 하나씩 순서대로 출력한다.

예제 입력 1

6 4
()()()
1 1 3
2 2 4
3 3 5
4 1 6

예제 출력 1

1

주어진 괄호 문자열 “()()()”에서 순서대로 쿼리를 진행하면 아래와 같다.

$1$번 쿼리를 진행하면 $1$~$3$번까지 부분 문자열이 반전 되어 “)())()”이 된다.

$2$번 쿼리를 진행하면 $2$~$4$번까지 부분 문자열의 위치가 바뀌어 “)))(()”이 된다.

$3$번 쿼리를 진행하면 $3$~$5$번까지 부분 문자열이 $180$도 회전하여 “))))()”이 된다.

$4$번 쿼리에서 $1$~$6$번까지 부분 문자열에서 올바른 괄호 쌍의 개수는 $1$개이다. 

예제 입력 2

10 10
)()(()(()(
3 7 9
2 5 5
2 4 7
4 2 2
4 7 7
3 1 8
3 6 10
4 6 8
4 3 3
4 1 9

예제 출력 2

0
0
1
0
3

예제 입력 3

15 20
)()(()(()(()())
1 3 4
4 12 12
4 3 15
3 4 15
2 5 7
2 7 11
3 8 15
2 2 9
2 7 15
4 3 3
3 2 12
2 2 9
2 4 7
3 4 6
4 9 12
2 3 13
1 11 12
4 1 13
2 4 13
4 6 8

예제 출력 3

0
6
0
1
6
0

예제 입력 4

1 1
(
4 1 1

예제 출력 4

0