题目描述
JOI 君在 IOI 高中上学,期末考试即将来临。考试的内容是计算 IOI 函数。IOI 函数是将 [1,109] 之间的整数映射到布尔值(即 True/False)的函数。IOI 函数可以从以下六条 IOI 高中规定的规则中构造:
-
设 a 为 [1,109] 之间的整数,则 [a] 是一个 IOI 函数。它将不小于 a 的整数映射成 True,将小于 a 的整数映射成 False。
-
记 f 为 IOI 函数,则 (f) 是一个 IOI 函数,它的映射规则与 f 的映射规则相同。
-
记 f 为 IOI 函数,则 !f 是一个 IOI 函数。设 x 为整数,若 f 将 x 映射为 True,则 !f 将 x 映射为 False;否则 !f 将 x 映射为 True。
-
记 f,g 为 IOI 函数,则 f&g 也是一个 IOI 函数。设 x 为整数,则 f&g 将 x 映射为 True,当且仅当 f,g 都将 x 映射为 True。
-
记 f,g 为 IOI 函数,则 f ˆg 也是一个 IOI 函数。设 x 为整数,则 f ˆg 将 x 映射为 True,当且仅当 f,g 中恰好有一个将 x 映射为 True。
-
记 f,g 为 IOI 函数,则 f|g 也是一个 IOI 函数。设 x 为整数,则 f|g 将 x 映射为 True,当且仅当 f,g 中至少有一个将 x 映射为 True。
如果某个 IOI 函数用多条规则构造出,数字更大的规则将决定函数值。例如,对于 [1]&[2]|[3] 应当应用规则 6,其中 $\texttt{f} = \texttt{[1]\&[2]},\texttt{g} = \texttt{[3]}$(而非应用规则 4,其中 $\texttt{f} = \texttt{[1]},\texttt{g} = \texttt{[2]|[3]}$)。额外地,对于规则 4,5,6,应当最大化 f 的长度。例如,对于 [4]ˆ[5]ˆ[6],应当在 $\texttt{f} = \texttt{[4]ˆ[5]},\texttt{g} = \texttt{[6]}$ 上应用规则 5(而非 $\texttt{f} = \texttt{[4]},\texttt{g} = \texttt{[5]ˆ[6]}$)。
为备战期末考试,JOI 君准备好了一个长度为 N 的 IOI 函数 S。他打算用 Q 个整数 X1,X2,⋯,XQ 来练习他的计算技能。于是他找来了你——能够熟练处理 IOI 函数的人,来解决这个问题。
你需要写一个程序。给定 N,Q,S 以及 X1,X2,⋯,XQ,对于 i=1,2=⋯,Q,回答 IOI 函数 S 会将 Xi 映射成 True 还是 False。
输入格式
输入格式如下所示:
N Q
S
X1
X2
⋮
XQ
输出格式
输出 Q 行,第 i 行为 True 或者 False,即 Xi 被 S 映射成的值。
15 5
(![2]|[3])&![4]
1
2
3
4
5
True
False
True
False
False
20 4
(!![23])^((([116])))
54
1
200
89
True
False
False
True
32 4
[2]|[5]&[1]|(([1000000000])|[7])
4
10
6
1
True
True
True
False
提示
样例解释
样例 1 解释如下:
Xi |
![2] |
[3] |
![2]|[3] |
![4] |
(![2]|[3])&![4] |
1 |
True |
False |
True |
True |
True |
2 |
False |
False |
False |
3 |
True |
True |
4 |
False |
5 |
样例 1 满足子任务 3,6,7 的条件。
样例 2 满足子任务 1,3,5∼7 的条件。
样例 3 满足子任务 3,4,6,7 的条件。
数据范围
- 1≤N≤1000000;
- 1≤Q≤200000;
- S 为长度为 N 的 IOI 函数;
- 1≤Xi≤109(1≤i≤Q);
- N,Q,Xi(1≤i≤Q)均为整数。
子任务
- (5 points)S 中不含 & 和 |;
- (20 points)Q=1;
- (10 points)N≤10000;
- (6 points)S 中不含 ! 和 ˆ;
- (12 points)当应用规则 4 或 6 来构造 S 时,f 和 g 中至少有一个是用规则 1 得到的;
- (20 points)N≤400000;
- (27 points)无额外约束。
*赛时公告:如果你复制题面中的 LaTeX,可能会得到 ˆ
,但实际上是 ^
。请特别注意。
由 Starrykiller 根据英文题面翻译。