만드는 중입니다

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

논리 무스

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

요약
불리언 and/or 식에서 l번째부터 r번째 키워드를 true나 false 하나로 바꿔 전체 값을 목표 값으로 만들 수 있는지 각 질의마다 판단합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 문자열, 구현
정답자
아직 제출이 없습니다

문제

농부 존(FJ)에게는 키워드 NN개로 이루어진 불리언 문장이 있다(1≤N<2⋅1051 \leq N < 2 \cdot 10^5, NN은 홀수). 홀수 번째 위치에는 true나 false만 나오고, 짝수 번째 위치에는 and나 or만 나온다.

x OPERATOR y 형태의 구문에서 xx와 yy는 각각 true 또는 false이고, OPERATOR는 and 또는 or이다. 이 구문은 다음과 같이 계산한다.

  • x and y는 xx와 yy가 모두 참이면 참이고, 그렇지 않으면 거짓이다.
  • x or y는 xx나 yy 중 하나라도 참이면 참이고, 그렇지 않으면 거짓이다.

FJ는 Moo 언어의 우선순위를 따라 문장을 계산한다. C++와 같이 and가 or보다 우선한다. 키워드가 하나만 남을 때까지 다음 단계를 반복한다.

  1. 문장에 and가 있으면 그중 하나를 골라, 그 주변 구문을 계산 결과로 바꾼다.
  2. 그렇지 않으면 문장에 or가 있다. 그중 하나를 골라, 그 주변 구문을 계산 결과로 바꾼다.

한 단계에서 계산할 수 있는 구문이 여럿이어도 어느 것을 고르는지는 결과에 영향을 주지 않는다. 문장은 언제나 같은 값으로 계산된다.

FJ는 QQ개의 질의를 받는다(1≤Q≤2⋅1051 \leq Q \leq 2 \cdot 10^5). 각 질의에서는 홀수인 정수 ll과 rr(1≤l≤r≤N1 \leq l \leq r \leq N)이 주어지고, 키워드 ll부터 rr까지의 구간을 지운다. 그 뒤 지운 구간을 true 또는 false 하나로 바꿔 전체 문장이 주어진 값이 되게 하려 한다. 이것이 가능한지 판단하라.

입력

첫 줄에 NN과 QQ가 주어진다.

다음 줄에는 유효한 불리언 문장을 이루는 NN개의 문자열이 주어진다.

이어지는 QQ개의 줄에는 정수 ll, rr과 교체 후 전체 문장이 가져야 할 값을 나타내는 문자열 true 또는 false가 주어진다.

출력

길이가 QQ인 문자열을 출력한다. ii번째 문자는 ii번째 질의가 가능하면 Y, 그렇지 않으면 N이다.

예제2

  1. 예제 1

    입력
    5 7
    false and true or true
    1 1 false
    1 3 true
    1 5 false
    3 3 true
    3 3 false
    5 5 false
    5 5 true
    
    예상 출력
    NYYYNYY
    
  2. 예제 2

    입력
    13 4
    false or true and false and false and true or true and false
    1 5 false
    3 11 true
    3 11 false
    13 13 true
    
    예상 출력
    YNYY