A119998.0/1 Trie 模板

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

小码君有一个数字集合,集合中一共有 nn 个非负整数。

接下来有 qq 次询问,每次给出一个非负整数 xx

对于每次询问,你需要从集合中选择一个数 aia_i,使得:

xaix \oplus a_i

尽可能大。

其中 \oplus 表示按位异或运算。

请你输出每次询问能够得到的最大异或值。

输入格式

第一行输入两个整数 n,qn,q,表示集合中数字的个数和询问次数。

第二行输入 nn 个非负整数 a1,a2,,ana_1,a_2,\dots,a_n

接下来 qq 行,每行输入一个非负整数 xx,表示一次询问。

输出格式

对于每次询问,输出一行一个整数,表示最大的异或值。

输入输出样例

  • 输入#1

    5 4
    1 2 3 10 15
    0
    5
    8
    7

    输出#1

    15
    15
    11
    13

说明/提示

样例解释 #1

对于询问 x=0x=0

选择 1515,有:

015=150\oplus 15=15

所以答案是 1515

对于询问 x=5x=5

选择 1010,有:

510=155\oplus 10=15

所以答案是 1515

对于询问 x=8x=8

选择 33,有:

83=118\oplus 3=11

所以答案是 1111

对于询问 x=7x=7

选择 1010,有:

710=137\oplus 10=13

所以答案是 1313

数据范围

对于所有测试数据,满足:

  • 1n,q2×1051\le n,q\le 2\times 10^5
  • 0ai,x<2300\le a_i,x<2^{30}
首页