만드는 중입니다

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

불 식

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

요약
완전히 괄호로 묶인 불 식이 주어지고, 각 질의에서 한 문자를 바꾼 뒤의 식 값을 구합니다.
난이도

보통10점 중 7점

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

문제

주어진 식은 0, 1, 연산자 &(불 AND), |(불 OR), ^(XOR, 배타적 OR), 그리고 괄호로만 이루어진다. 올바른 불 식은 재귀적으로 정의된다. 식이 문자 0 또는 1 하나이거나, 올바른 불 식 두 개에 불 연산 하나를 적용한 것이면 올바르다. 간단하게 하려고 모든 연산은 괄호로 감싼다. 식에는 공백이나 위에 나온 문자 외의 다른 문자가 없다. 예를 들어 ((0|1)|0), (0&1), 0은 올바른 식이고, 0|1, 0|1&1, (0)은 올바르지 않다. 식의 값을 구하라. 이 식은 질의에 따라 바뀐다. mm개의 질의가 주어지며, 각 질의는 어떤 위치의 문자를 바꾼다. 매 질의 후의 식 값을 구하라.

입력

첫 줄에 최대 800 000800\,000 문자의 올바른 불 식 SS가 주어진다. 둘째 줄에는 질의의 개수 mm (1≤m≤400 0001 \le m \le 400\,000)이 주어진다. 이어지는 mm개의 줄에는 정수 pip_i와 문자 cic_i가 공백으로 구분되어 주어지며, 이는 위치 pip_i의 문자를 cic_i로 바꾼다는 뜻이다. 모든 질의 후에도 식이 올바른 상태를 유지함이 보장된다.

출력

한 줄에 0 또는 1 문자 m+1m+1개를 출력한다. 첫 문자는 원래 식의 값이고, 이어지는 mm개 문자는 질의를 순서대로 적용한 뒤의 식 값이다.

예제1

  1. 예제 1

    입력
    ((1&1)^(0|1))
    3
    11 0
    7 |
    5 0
    
    예상 출력
    0110