만드는 중입니다

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

조화 연산

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

요약
뒤집기와 회전 연산으로 이루어진 목록에서, 구간을 적용했을 때 문자열 S가 그대로 남는 구간의 개수를 셉니다.
난이도

보통10점 중 7점

유형
수학, 문자열, 해시맵
정답자
아직 제출이 없습니다

문제

이 문제에서는 길이가 ∣t∣≥2|t| \ge 2인 0-based 문자열 tt에 적용할 수 있는 세 가지 연산을 다룬다.

I(t)I(t): tt를 뒤집는다.

R(t,D)R(t, D): tt를 오른쪽으로 DD칸 회전한다. 여기서 DD는 D<∣t∣D < |t|를 만족하는 양의 정수다. 즉, 모든 0≤i<∣t∣0 \le i < |t|에 대해 R(t,D)R(t, D)의 (i+D) mod ∣t∣(i+D) \bmod |t| 위치 문자는 tt의 ii 위치 문자다.

L(t,D)L(t, D): R(t,D)R(t, D)와 같지만 오른쪽이 아니라 왼쪽으로 회전한다.

예를 들어 pda에 II를 적용하면 adp, D=2D = 2인 RR을 적용하면 dap, D=2D = 2인 LL을 적용하면 apd가 된다. 어떤 tt와 DD에 대해서도 ∣I(t)∣=∣R(t,D)∣=∣L(t,D)∣=∣t∣|I(t)| = |R(t, D)| = |L(t, D)| = |t|이다.

연산 리스트를 문자열에 적용하면 리스트 순서대로 차례로 실행된다. 첫 번째 연산을 원래 문자열에 적용하고, 두 번째 연산을 그 결과에 적용하는 식이다.

소문자로 이루어진 문자열 SS와 KK개의 연산 F1,F2,…,FKF_1, F_2, \dots, F_K가 주어진다. 1≤i≤j≤K1 \le i \le j \le K를 만족하는 인덱스 쌍 (i,j)(i, j) 중, 부분 리스트 Fi,Fi+1,…,FjF_i, F_{i+1}, \dots, F_j를 SS에 적용한 최종 결과가 SS와 같은 쌍의 개수를 구하라.

예를 들어 S=S = pda, K=2K = 2, F1=R(t,2)F_1 = R(t, 2), F2=L(t,2)F_2 = L(t, 2)라고 하자. F1F_1만 적용하면 dap이 되어 SS와 다르다. F1,F2F_1, F_2를 적용하면 L(R(pda,2),2)L(R(\text{pda}, 2), 2)가 되어 다시 pda가 되므로 이 쌍은 센다. F2F_2만 적용하면 apd가 되어 SS와 다르다. 답은 11이다.

입력

첫 줄에 소문자로 이루어진 문자열 SS (2≤∣S∣≤2⋅1052 \le |S| \le 2 \cdot 10^5)가 주어진다.

둘째 줄에 연산의 개수 KK (1≤K≤2⋅1051 \le K \le 2 \cdot 10^5)가 주어진다.

이어지는 KK개 줄에 리스트 순서대로 연산이 한 줄에 하나씩 주어진다. II 연산은 대문자 I만 있는 줄이다. RR 또는 LL 연산은 대문자 문자 뒤에 정수 DD (1≤D<∣S∣1 \le D < |S|)가 붙는다.

출력

Fi,…,FjF_i, \dots, F_j를 SS에 적용한 결과가 SS가 되는 쌍 (i,j)(i, j) (1≤i≤j≤K1 \le i \le j \le K)의 개수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    pda
    2
    R 2
    L 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    aaa
    4
    R 1
    I
    I
    R 1
    
    예상 출력
    10
    
  3. 예제 3

    입력
    caso
    6
    L 1
    I
    I
    R 1
    I
    I
    
    예상 출력
    4