만드는 중입니다

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

외계 분자

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

요약
문자열 S에 구간을 같은 문자로 덮어쓰는 연산이 주어질 때, 구간 S[l..r]이 주어진 N개 문자열 중 하나와 같은지 판별합니다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 문자열 매칭, 해시맵
정답자
아직 제출이 없습니다

문제

41기는 R&E로 '외계 생명체의 유전 정보 채취해 오기'라는 매우 도전적인 주제를 골랐다. 터무니없고 실현 불가능해 보이는 주제지만, 41기는 단 한 학기 만에 외계 분자를 추출해 올 수 있었다! 이 분자는 DNA의 염기 서열처럼 일정한 유전 단위들이 일렬로 나란히 결합된 형태였다. 외계 생명체가 실존한다는 중요한 단서를 채취한 셈이다!

41기는 외계 분자를 분석하려고 분자마다 고유한 문자열을 부여했다. 외계 분자는 총 26가지 유전 단위의 조합으로 이루어져 있었다. 41기는 유전 단위를 알파벳 A부터 Z까지에 대응시켜 ABRTTWYS⋯\cdots 같은 문자열로 분자를 표현했다.

문제는 심각했다. 외계 분자는 지구의 대기와 결합하면 심각하게 변형된다. 시간이 지날수록 분자는 오염되었고, 한참 뒤에는 처음 채취했을 때와 완전히 다른 구조를 띠었다. 41기는 이 귀중한 자료를 놓치고 싶지 않았다. 그래서 다음 방법을 썼다.

41기는 외계 분자도 DNA처럼 상보적인 분자 쌍이 존재한다는 점을 관찰했다. 이를 바탕으로 외계 분자에 특정 분자 서열이 존재하는지 판단할 수 있었다. 41기는 이 방법으로 특정 시각에 외계 분자 안의 특정 분자 서열들이 존재하는지 구하고, 그 정보로 처음 형태를 대략 복원하려 했다.

당신은 신이다. 당신은 이 DNA가 앞으로 어떻게 변할지 모두 알고 있다. 이를 바탕으로 41기가 특정 시각에 특정 분자 서열들을 관찰할 수 있을지 판단해 보자!

입력

첫 번째 줄에 문자열 SS가 주어진다. 이는 외계 분자의 처음 모습을 나타낸다.

두 번째 줄에 41기가 확인할 문자열의 개수 NN이 주어진다.

이후 NN개의 줄에 걸쳐 문자열 T1,T2,⋯ ,TNT_1, T_2, \cdots, T_N이 주어진다. 참고로 TiT_i가 SS보다 길 수도 있다.

그 다음 줄에 쿼리의 개수 QQ가 주어진다. 그 다음 QQ개의 줄에 걸쳐 아래의 질의가 주어진다.

  • 11 ll rr cc: 외계 분자의 ll번째 문자부터 rr번째 문자까지 모두 문자 cc로 바뀐다.
  • 22 ll rr: 외계 분자의 ll번째 문자부터 rr번째 문자까지 고려한 문자열, 즉 부분 문자열 S[l⋯r]S[l \cdots r]이 T1,T2,⋯ ,TNT_1, T_2, \cdots, T_N 중 하나와 일치하면 1, 그렇지 않으면 0을 출력한다.

출력

2번 쿼리에 대한 답을 한 줄에 하나씩 출력한다.

2번 쿼리는 하나 이상 주어진다.

제한

  • 1≤N≤1,000,0001\leq N\leq 1,000,000
  • 1≤Q,∣S∣≤250,0001\leq Q,|S|\leq 250,000
  • 1≤∣Ti∣≤1,000,0001\leq|T_i|\leq 1,000,000
  • 1≤∑i=1N∣Ti∣≤1,000,0001\leq\displaystyle\sum_{i=1}^{N}|T_i|\leq 1,000,000
  • 1≤l≤r≤∣S∣1\leq l\leq r\leq |S|
  • S,Ti,cS, T_i, c는 모두 알파벳 대문자로 이루어져 있다. (1≤i≤N1\leq i\leq N)

힌트

길이가 ll인 문자열 SS와 1≤i≤j≤l1 \leq i \leq j \leq l을 만족하는 두 정수 ii, jj에 대해, S[i⋯j]S[i \cdots j]는 SS의 ii번째 문자부터 jj번째 문자까지를 순서대로 포함하는 문자열이다. 이러한 문자열을 문자열 SS의 부분 문자열이라고 한다.

예를 들어 SS가 ABCDABA라면, S[1⋯5]S[1 \cdots 5]는 ABCDA이고, S[3⋯7]S[3 \cdots 7]은 CDABA이다. 따라서 ABCDA와 CDABA는 문자열 ABCDABA의 부분 문자열이다. 하지만 AAAA는 문자열 ABCDABA의 부분 문자열이 아니다.

(출처: 가장 긴 공통 괄호 문자열, koi 2021)

예제1

  1. 예제 1

    입력
    ABABABAB
    5
    AB
    ABCD
    EE
    BCDE
    BABA
    10
    2 1 2
    2 2 3
    1 3 3 B
    2 2 5
    1 7 8 E
    2 7 8
    1 3 5 C
    1 4 8 D
    2 1 4
    2 2 5
    
    예상 출력
    1
    0
    0
    1
    1
    0