#P8. 表达式 (expr)

表达式 (expr)

题目描述

按如下方式定义一个,输入一个正整数 xx,输出一个布尔值(TrueFalse)的表达式:

  1. aa 是一个 [1,109][1,10^9] 内的整数,定义表达式 [a]:若 xax \ge a,则返回 True,若 x<ax \lt a,则返回 False
  2. E 为一个表达式,则 (E) 也是一个表达式,它的返回值和 E 相同。
  3. E 为一个表达式,则 !E 也是一个表达式,它的返回值和 E 相反,即,若 E = True,则 !E = False;若 E = False,则 !E = True
  4. E,F 为两个表达式,则 E&F 也是一个表达式,它的含义是逻辑与运算,即,若 E,F = True,则 E&F = True,否则 E&F = False
  5. E,F 为两个表达式,则 E^F 也是一个表达式,它的含义是异或运算,即,若 E ≠ F,则 E^F = True,否则 E^F = False
  6. E,F 为两个表达式,则 E|F 也是一个表达式,它的含义是逻辑或运算,即,若 E,F = False,则 E|F = False,否则 E|F = True

其中编号越小的操作优先级越高,多个同编号的操作,越靠左的优先级越高。例如 [1]&[2]|[3],则应该先算 & 再算 |;例如 [1]^[2]^[3],则应该先算 [1]^[2],令 G=[1]^[2],然后再计算 G^[3] 得到答案。

QQ 次询问,每次询问给定一个输入的数 xx,你要回答输出是 True 还是 False

输入格式

第一行两个整数 N,QN,Q

第二行一个长为 NN 的字符串 SS,表示给出的表达式。

接下来 QQ 行,每行一个整数 xx,表示一个输入。

输出格式

输出 QQ 行,每行是 True 或者 False,依次回答每个输入。

样例

样例输入

15 5
(![2]|[3])&![4]
1
2
3
4
5

样例输出

True
False
True
False
False

x=3x=3 时:![2]=False, [3]=True, ![2]|[3]=True, ![4]=True, (![2]|[3])&![4]=True

数据范围与约定

对于所有数据,有:

  • 1N1061 \le N \le 10^6
  • 1Q2×1051 \le Q \le 2 \times 10^5
  • SS 是一个正确的表达式
  • 1x1091 \le x \le 10^9
子任务 附加限制 分值
11 SS 中没有 & 和 ` `
22 Q=1Q=1 2525
33 N104N \le 10^4 1515
44 SS 中没有 !^ 1010
55 N4×105N \le 4 \times 10^5 2020
66 无特殊性质