题目描述
给你一个长度为 n 的数列 a1,a2,…,an。
接下来有 q 次询问,每次询问给你两个整数 x 和 k,你需要判断数列 a 中存在多少个元素与 x 的异或和 ≤k?
也就是说,你需要统计存在多少个下标 i 满足 1≤i≤n 且 ai⊕x≤k。这里,⊕ 是异或符号。
输入格式
第一行,两个整数 n 和 q,以一个空格分隔,分别表示数列长度以及询问次数。
第二行,n 个整数 a1,a2,…,an,以空格分隔。
接下来 q 行,每行包含两个整数 x 和 k,以空格分隔,表示一次询问。
输出格式
对于每次询问,输出一行,包含一个整数,表示答案(即存在多少个 ai 满足 ai⊕x≤k)。
样例
5 2
1 2 3 4 5
2 3
5 3
3
2
12 10
8 2 3 7 6 15 20 13 5 12 1 10
7 5
3 11
8 15
6 20
8 10
5 15
8 10
7 16
13 0
7 11
5
8
11
12
7
11
7
11
1
9
说明/提示
样例 1 解释
第一次询问,x=2,k=3
- a1=1,1⊕2=3≤3 满足条件;
- a2=2,2⊕2=0≤3 满足条件;
- a3=3,3⊕2=1≤3 满足条件;
- a4=4,4⊕2=6>3 不满足条件;
- a5=5,5⊕2=7>3 不满足条件。
第二次询问,x=5,k=3
- a1=1,1⊕5=4>3 不满足条件;
- a2=2,2⊕5=7>3 不满足条件;
- a3=3,3⊕5=6>3 不满足条件;
- a4=4,4⊕5=1≤3 满足条件;
- a5=5,5⊕5=0≤3 满足条件。
数据规模与约定
- 对于 60% 的数据,n,q≤2000,ai,x,k<210
- 对于 100% 的数据,1≤n,q≤2⋅105,0≤ai,x,k<220