Logo
(追記) (追記ここまで)

29162번 - 북극여우는 괄호를 뒤집어

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

문제

극지 연구소에서 연구 중인 협이는 저번에 북극곰이 괄호를 찢는다는 특성을 알아낸 후 괄호로 여러가지 실험을 하고 있었다. 연구를 하다가 잠깐 쉬고 온 협이는 실험 중이던 괄호가 바뀐 것을 알아차렸다. 범인을 찾기 위해 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

힌트

출처

University > 신촌지역 대학생 프로그래밍 대회 동아리 연합 > 2023 신촌지역 대학생 프로그래밍 대회 동아리 연합 여름 대회 (SUAPC 2023 Summer) N번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /