测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7393. 0/1 Trie 模板

编程题 普及/提高-
知识点

题目描述

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

接下来有 $q$ 次询问,每次给出一个非负整数 $x$。

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

$$ x \oplus a_i $$

尽可能大。

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

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

输入格式

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

第二行输入 $n$ 个非负整数 $a_1,a_2,\dots,a_n$。

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

输出格式

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

输入输出样例

输入 #1
5 4
1 2 3 10 15
0
5
8
7
输出 #1
15
15
11
13

说明/提示

## 样例解释 #1

对于询问 $x=0$:

选择 $15$,有:

$$ 0\oplus 15=15 $$

所以答案是 $15$。

对于询问 $x=5$:

选择 $10$,有:

$$ 5\oplus 10=15 $$

所以答案是 $15$。

对于询问 $x=8$:

选择 $3$,有:

$$ 8\oplus 3=11 $$

所以答案是 $11$。

对于询问 $x=7$:

选择 $10$,有:

$$ 7\oplus 10=13 $$

所以答案是 $13$。

## 数据范围

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

- $1\le n,q\le 2\times 10^5$
- $0\le a_i,x<2^{30}$
上一题 去做题 下一题