题库练习 「2017 山东三轮集训 Day6」C
← 上一题 下一题 →

A6014 | 「2017 山东三轮集训 Day6」C

时间限制1s
内存限制512MB
通过 / 提交0/0

题目描述

JOHNKRAM 对于可持久化数据结构比较感兴趣,某天他突然想到:能否将可持久化线段树和可持久化字典树合二为一呢?于是他出了这样一道题:

给一个长度为 $n$ 的序列 $a_i$,每次对序列中的所有数与另外某个数进行一次某种位运算或者询问区间 $[l, r]$ 内第 $k$ 小的数是多少。JOHNKRAM 发现他自己不会做,于是他来向你求助。

输入格式

第一行包含两个整数 $n$ 和 $m$,表示序列长度和操作个数。
第二行包含 $n$ 个整数,表示序列 $a_i$。
接下来 $m$ 行,每行是以下四种之一:

* $\texttt{Xor x}$
* $\texttt{And x}$
* $\texttt{Or x}$
* $\texttt{Ask l r k}$

前三种表示对整个序列与 $x$ 进行一次给定位运算,最后一种表示一次询问。

输出格式

对于每一次询问,输出一个整数,表示区间 $[l, r]$ 内第 $k$ 小的数。

输入输出样例

输入 #1
10 10
1 2 3 4 5 6 7 8 9 0
Xor 1
And 254
Ask 1 2 2
Ask 1 8 3
Ask 1 7 4
Or 513
Xor 2
Ask 5 10 3
Ask 1 9 6
Ask 3 10 3
输出 #1
2
2
4
517
519
517
C++ 编辑器
输入
输出