CF1851F Lisa and the Martians

题目描述

Lisa 被火星人绑架了!不过没关系,因为她看过很多关于外星人的电视剧,所以她知道自己将会面临什么。我们称一个整数为“火星数”,如果它是一个非负整数且严格小于 $2^k$。例如,当 $k = 12$ 时,$51$、$1960$、$0$ 是火星数,而 $\pi$、$-1$、$\frac{21}{8}$、$4096$ 不是火星数。 外星人会给 Lisa $n$ 个火星数 $a_1, a_2, \ldots, a_n$。然后他们会让她说出任意一个火星数 $x$。接着,Lisa 会从给定的序列中选择一对数 $a_i, a_j$($i \neq j$),并计算 $(a_i \oplus x) \& (a_j \oplus x)$。其中,$\oplus$ 表示[按位异或](http://tiny.cc/xor_wiki)操作,$\&$ 表示[按位与]()操作。例如,$(5 \oplus 17) \& (23 \oplus 17) = (00101_2 \oplus 10001_2) \& (10111_2 \oplus 10001_2) = 10100_2 \& 00110_2 = 00100_2 = 4$。 Lisa 确信,计算结果越大,她回家的机会就越大。请帮助她选择合适的 $i, j, x$,使得计算结果最大。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例包含两行。 第一行包含两个整数 $n, k$($2 \le n \le 2 \cdot 10^5$,$1 \le k \le 30$),分别表示火星数序列的长度和 $k$ 的值。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i < 2^k$),表示火星数序列。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出三个整数 $i, j, x$($1 \le i, j \le n$,$i \neq j$,$0 \le x < 2^k$)。$(a_i \oplus x) \& (a_j \oplus x)$ 的值应尽可能大。 如果有多组解,输出任意一组均可。

说明/提示

第一个测试用例:$(3 \oplus 14) \& (1 \oplus 14) = (0011_2 \oplus 1110_2) \& (0001_2 \oplus 1110_2) = 1101_2 = 1101_2 \& 1111_2 = 1101_2 = 13$。 第二个测试用例:$(1 \oplus 0) \& (1 \oplus 0) = 1$。 第三个测试用例:$(9 \oplus 4082) \& (13 \oplus 4082) = 4091$。 第四个测试用例:$(3 \oplus 7) \& (0 \oplus 7) = 4$。 由 ChatGPT 4.1 翻译