#abc249g. [abc249_g]Xor Cards
[abc249_g]Xor Cards
题目描述
有 张卡片,编号为 。第 张卡片 的正面写有整数 ,背面写有整数 。
考虑选择一张或多张卡片,使得所选卡片正面的整数的异或和不超过 。找到所选卡片背面整数的最大可能异或和。
什么是异或和?两个整数 和 的异或和 定义如下。
- 二进制表示中,对于异或和 的 位(),如果 和 的 位中恰好有一个位是 ,则 的该位为 ;否则,该位为 。
例如,(二进制表示:)。
通常情况下, 个整数 的异或和被定义为 $(\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)$。我们可以证明它与 的顺序无关。
约束条件
- 输入的所有值都是整数。
输入
输入数据从标准输入获得,格式如下:
输出
打印选择一张或多张卡片,使得所选卡片正面的整数异或和不超过 的条件下,背面整数的最大可能异或和。如果无法按照条件选择卡片,则输出 。
示例输入 1
4 2
1 1
3 2
2 2
0 1
示例输出 1
3
选择卡片 和 ,它们正面整数的异或和为 ,背面整数的异或和为 ,这是最大值。
示例输入 2
1 2
3 4
示例输出 2
-1
无法满足条件选择卡片的情况。
示例输入 3
10 326872757
487274679 568989827
267359104 968688210
669234369 189421955
1044049637 253386228
202278801 233212012
436646715 769734012
478066962 376960084
491389944 1033137442
214977048 1051768288
803550682 1053605300
示例输出 3
1064164329