Qarentheziz 수열
시간 제한2초메모리 제한1024 MB
괄호 문자열의 구간을 뒤집는 쿼리를 처리하며, 질의된 부분 문자열을 균형 잡힌 괄호 문자열로 만드는 최소 연산 횟수를 구합니다.
문제
Ryan은 (와 )로만 이루어진 문자열에 관심이 많다. 특히 균형 잡힌 문자열을 좋아한다. 균형 잡힌 문자열은 다음 규칙으로 만들 수 있다.
()는 균형 잡힌 문자열이다.- 균형 잡힌 문자열 두 개를 이어 붙인 문자열은 균형 잡힌 문자열이다.
- 가 균형 잡힌 문자열이면,
(, ,)를 이 순서대로 이어 붙인 문자열은 균형 잡힌 문자열이다.
예를 들어 ()()와 (()())는 균형 잡힌 문자열이다. )(, )()((), (는 균형 잡힌 문자열이 아니다.
Ryan은 문자열 의 슬픔을 를 균형 잡힌 문자열로 만드는 데 필요한 연산의 최소 횟수로 정의한다. 연산은 임의의 순서로, 임의의 횟수만큼 사용할 수 있다.
- 의 맨 앞에
)를 추가한다. - 의 맨 뒤에
(를 추가한다. - 의 인접한 두 문자를 서로 바꾼다.
Ryan은 (와 )로만 이루어진 길이 의 문자열 를 갖고 있다. 개의 질의를 주어진 순서대로 처리한다. 질의는 두 종류이다.
1 l r: 의 번째 문자부터 번째 문자까지(양 끝 포함) 각 문자를 확인해서,(는)로,)는(로 바꾼다.2 l r: 의 번째 문자부터 번째 문자까지 부분 문자열의 슬픔을 출력한다.
입력
첫 줄에 두 정수 과 (, )가 공백으로 구분되어 주어진다. 둘째 줄에는 (와 )로만 이루어진 길이 의 문자열 가 주어진다. 이후 개의 줄에는 각각 세 정수 , , (, )가 공백으로 구분되어 주어진다. 인 질의가 적어도 하나 있다.
출력
인 각 질의에 대해, 번째 문자부터 번째 문자까지 부분 문자열의 슬픔을 한 줄에 하나씩 출력한다.