J. 可排序数组
每个测试点时间限制:1 秒
每个测试点内存限制:1024 兆字节
给定一个包含 N 个整数的数组 A:[A1,A2,…,AN]。
称数组 A 是 (p,q)-可排序的,如果存在一种对 A 的重排,使得重排后对于所有满足 1≤i<j≤N 的数对 (i,j),以下两个条件均成立:
Ai⊕p≤Aj⊕q
Ai⊕q≤Aj⊕p
其中 ⊕ 表示按位异或。
另给定一个长度为 M 的数组 X:[X1,X2,…,XM]。
计算满足 1≤u<v≤M 且数组 A 是 (Xu,Xv)-可排序的数对 (u,v) 的个数。
输入
第一行包含两个整数 N、M(2≤N,M≤200000)。
第二行包含 N 个整数 Ai(0≤Ai<230)。
第三行包含 M 个整数 Xu(0≤Xu<230)。
输出
输出一个整数,表示满足条件的数对 (u,v) 的个数。
样例
输入
3 4
0 3 0
1 2 1 1
输出
3
输入
5 2
0 7 13 22 24
12 10
输出
1
输入
3 3
0 0 0
1 2 3
输出
0
样例解释
对于样例 #1:
数组 A 是 (1,1)-可排序的,可以通过重排 A 为 [0,0,3] 实现。
对于样例 #2:
数组 A 是 (12,10)-可排序的,可以通过重排 A 为 [13,0,7,24,22] 实现。