만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

올바른 괄호 문자열

시간 제한2초메모리 제한1024 MB

요약
괄호 문자열 A와 구간 (L, R)이 주어질 때, 구간 안의 k에서 나누어 두 개의 균형 잡힌 괄호 문자열이 되는지 판별합니다.
난이도

보통10점 중 7점

유형
누적 합, 문자열, 구현
정답자
아직 제출이 없습니다

문제

()()는 올바른 괄호 문자열이다.

  • ss가 올바른 괄호 문자열이면 (s)(s)도 올바른 괄호 문자열이다.
  • ss와 tt가 올바른 괄호 문자열이면 stst도 올바른 괄호 문자열이다.

예를 들어 ()(), (())(), (()())는 올바른 괄호 문자열이고, (()(, )(, kala는 그렇지 않다.

문제 설명

길이가 NN이고 (와 )로만 이루어진 문자열 AA가 주어진다. 또 MM개의 질의가 주어지며, 각 질의는 두 정수 LL과 RR로 이루어진다. 각 질의마다 L<k<RL < k < R을 만족하는 정수 kk가 존재하여 ALAL+1…AkA_L A_{L+1} \ldots A_k와 Ak+1Ak+2…ARA_{k+1} A_{k+2} \ldots A_R이 모두 올바른 괄호 문자열이 되는지 판단한다. 그런 kk가 있으면 JAH, 없으면 EI를 출력한다.

문자열 AA의 위치는 11부터 NN까지 번호가 매겨진다.

입력

첫 줄에 문자열의 길이 NN과 질의의 개수 MM이 주어진다 (2≤N≤1062 \le N \le 10^6, 1≤M≤1061 \le M \le 10^6).

둘째 줄에는 문자열 AA가 주어진다. AA는 정확히 NN개의 문자로 이루어지며, 각 문자는 ( 또는 )이다.

이어지는 MM개의 줄에는 공백으로 구분된 두 정수 LL과 RR이 각각 주어진다 (1≤L<R≤N1 \le L < R \le N).

출력

각 질의의 답을 한 줄에 하나씩 출력한다. 그런 kk가 있으면 JAH, 없으면 EI를 출력한다.

예제1

  1. 예제 1

    입력
    9 3
    (()(()))(
    2 7
    1 8
    7 9
    
    예상 출력
    JAH
    EI
    EI