时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
将一个非负整数序列划分为

段,分别计算出各段中的整数按位或的结果,然后再把这些结果按位与起来得到一个最终结果,把这个最终结果定义为这个序列的一个

值。
给定一个长度为

的非负整数序列

,一个整数

和以下三种操作:
1.给定一个整数

,把序列中的所有数字按位或上

。即

。
2.给定一个整数

,把序列中的所有数字按位与上

。即

。
3.查询当前序列最大的

值。
lililalala太菜了,他希望你来帮他解决这个问题。
输入描述:
第一行两个整数
)
--序列长度和划分的段数。
第二行

个整数
)
。
第三行一个整数
)
--操作的数量。
然后

行其中第

行为以下三种格式之一:

--把序列中的所有数字按位或上
)
。

--把序列中的所有数字按位与上
)
。

--查询当前序列最大的

值。
输出描述:
对于每次查询(操作
)输出一行一个整数作为查询结果。
示例1
输入
复制
3 2
11 30 4
5
3
1 9
3
2 22
3