#P15677. [ICPC 2024 Jakarta R] Xorderable Array

[ICPC 2024 Jakarta R] Xorderable Array

说明

给定一个包含 NN 个整数的数组 AA[A1,A2,,AN][A_1, A_2, \dots, A_N]

如果可以通过重排 AA,使得对于所有满足 1i<jN1 \leq i < j \leq N(i,j)(i, j) 对,在重排后都满足以下两个条件:AipAjqA_i \oplus p \leq A_j \oplus qAiqAjpA_i \oplus q \leq A_j \oplus p,则称数组 AA(p,q)(p, q)-xorderable 的。其中运算符 \oplus 表示按位异或。

给定另一个长度为 MM 的数组 XX[X1,X2,,XM][X_1, X_2, \dots, X_M]。请计算满足 1u<vM1 \leq u < v \leq M 且数组 AA(Xu,Xv)(X_u, X_v)-xorderable 的 (u,v)(u, v) 对的数量。

输入格式

第一行包含两个整数 NN MM2N,M2000002 \leq N, M \leq 200\,000)。

第二行包含 NN 个整数 AiA_i0Ai<2300 \leq A_i < 2^{30})。

第三行包含 MM 个整数 XuX_u0Xu<2300 \leq X_u < 2^{30})。

输出格式

输出一个整数,表示满足 1u<vM1 \leq u < v \leq M 且数组 AA(Xu,Xv)(X_u, X_v)-xorderable 的 (u,v)(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 的解释

数组 AA(1,1)(1, 1)-xorderable 的,可以通过将数组 AA 重排为 [0,0,3][0, 0, 3] 来实现。

样例输入/输出 #2 的解释

数组 AA(12,10)(12, 10)-xorderable 的,可以通过将数组 AA 重排为 [13,0,7,24,22][13, 0, 7, 24, 22] 来实现。

翻译由 DeepSeek V3.2 完成