아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

괄호 문자열 ?

시간 제한0.5초메모리 제한512 MB

요약
괄호 문자열과 여러 구간 질의가 주어질 때, 각 구간 부분 문자열이 올바른 괄호 문자열이면 1, 아니면 0을 더한 합을 구한다.
난이도

보통10점 중 6점

유형
스택, 누적 합, 해시맵, 문자열 매칭
정답자
아직 제출이 없습니다

문제

괄호 문자열은 (와 )로 이루어진 문자열이고, 올바른 괄호 문자열은 다음과 같이 정의된다.

  1. 빈 문자열은 올바른 괄호 문자열이다.
  2. S가 올바른 괄호 문자열일 때, (S)도 올바른 괄호 문자열이다.
  3. S와 T가 올바른 괄호 문자열이라면, ST도 올바른 괄호 문자열이다.
  4. 모든 올바른 괄호 문자열은 위의 3개 규칙으로만 만들 수 있다.

(와 )로 이루어진 괄호 문자열 S = s1s2...sN과 M개의 쿼리가 주어진다. 쿼리는 두 정수 i, j (1 ≤ i ≤ j ≤ N)로 이루어져 있고, 쿼리가 의미하는 것은 다음과 같다.

  • S의 부분 문자열 SiSi+1...Sj가 올바른 괄호 문자열이면 1, 아니면 0

모든 쿼리를 수행하고, 쿼리의 결과를 누적한 값을 구해보자.

입력

첫째 줄에 문자열 S가 주어진다. 둘째 줄에 쿼리의 개수 M이 주어진다. 셋째 줄부터 M개의 줄에 쿼리가 한 줄에 하나씩 주어진다.

출력

쿼리의 결과를 누적한 값을 출력한다.

제한

  • 1 ≤ |S| ≤ 100,000
  • 1 ≤ M ≤ 100,000

예제1

  1. 예제 1

    입력
    ()()()()
    8
    1 8
    2 7
    3 6
    2 8
    1 5
    5 8
    2 4
    4 8
    
    예상 출력
    3