#AT2155. G - Xor Cards

G - Xor Cards

当前没有测试数据。

G - 异或卡片

得分:$600$ 分

问题描述

有 $N$ 张编号为 $1, \dots, N$ 的卡片。卡片 $i$ ($1 \leq i \leq N$) 的正面写着整数 $A_i$,背面写着整数 $B_i$。

考虑选择一张或多张卡片,使得所选卡片正面的整数的异或和不超过 $K$。求所选卡片背面整数的最大可能异或和。

什么是异或和? 两个整数 $a$ 和 $b$ 的异或和 $a \oplus b$ 定义如下。
  • $a \oplus b$ 在二进制表示中,对于 $k \geq 0$,如果 $a$ 和 $b$ 的二进制表示在第 $2^k$ 位上有且只有一个为 $1$,则 $a \oplus b$ 在第 $2^k$ 位上为 $1$,否则为 $0$。
例如,$3 \oplus 5 = 6$(二进制表示: $011 \oplus 101 = 110$)。
一般而言,$k$ 个整数 $p_1, \dots, p_k$ 的异或和定义为 $(\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)$。我们可以证明,这个和与 $p_1, \dots, p_k$ 的顺序无关。

约束条件

  • $1 \leq N \leq 1000$
  • $0 \leq K \lt 2^{30}$
  • $0 \leq A_i, B_i \lt 2^{30} \, (1 \leq i \leq N)$
  • 输入中的所有值都是整数。

输入

从标准输入中按以下格式输入:

NN KK

A1A_1 B1B_1

\vdots

ANA_N BNB_N

输出

当选择一张或多张卡片,使得所选卡片正面的整数的异或和不超过 $K$ 时,请输出所选卡片背面整数的最大可能异或和。如果无法选择满足要求的卡片,请输出 $-1$。


4 2
1 1
3 2
2 2
0 1
3

选择卡片 $1$ 和卡片 $2$,它们正面整数的异或和为 $2$,背面整数的异或和为 $3$,这是最大的。


1 2
3 4
-1

无法选择满足条件的卡片。


10 326872757
487274679 568989827
267359104 968688210
669234369 189421955
1044049637 253386228
202278801 233212012
436646715 769734012
478066962 376960084
491389944 1033137442
214977048 1051768288
803550682 1053605300
1064164329