CF1617E Christmas Chocolates

题目描述

圣诞节快到了,Icy 刚刚收到了祖父母送来的一盒巧克力!盒子里有 $n$ 颗巧克力,第 $i$ 颗巧克力的类型是非负整数 $a_i$。 Icy 认为好事成双。不幸的是,所有巧克力的类型都是不同的(所有 $a_i$ 都不相同)。Icy 想让至少有一对巧克力的类型相同。 因此,她请求祖父母进行一些巧克力交换。在进行任何巧克力交换之前,Icy 会选择两颗巧克力,编号分别为 $x$ 和 $y$($1 \le x, y \le n$,$x \ne y$)。 在一次巧克力交换中,Icy 的祖父母会选择一个非负整数 $k$,使得 $2^k \ge a_x$,并将第 $x$ 颗巧克力的类型从 $a_x$ 变为 $2^k - a_x$(即执行 $a_x := 2^k - a_x$)。 只有当 $a_x = a_y$ 时,巧克力交换才会停止。注意,其他类型相同的巧克力对不会导致过程停止。 Icy 的祖父母很聪明,所以他们会选择最优的交换序列,使得所需的交换次数最少。由于 Icy 喜欢制造麻烦,她希望通过适当选择 $x$ 和 $y$,使得最少所需的交换次数最大。她想知道,在哪一对 $(x, y)$ 上,最少所需的交换次数在所有可能的 $(x, y)$ 选择中最大。 由于 Icy 不擅长数学,她希望你能帮她解决这个问题。

输入格式

输入的第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$),表示巧克力的数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 10^9$)。 保证所有 $a_i$ 都不相同。

输出格式

输出三个整数 $x$、$y$ 和 $m$。 $x$ 和 $y$ 是进行交换操作的最优巧克力的编号。你的输出需满足 $1 \le x, y \le n$,$x \ne y$。 $m$ 是将 $a_x$ 变为 $a_y$ 所需的最少交换次数。可以证明,对于任意一对巧克力,$m \le 10^9$。 如果有多组解,输出任意一组即可。

说明/提示

在第一个测试样例中,将类型为 $6$ 的巧克力变为类型为 $9$ 的巧克力最少需要 $5$ 次交换。交换序列如下:$6 \rightarrow 2 \rightarrow 0 \rightarrow 1 \rightarrow 7 \rightarrow 9$。 在第二个测试样例中,将类型为 $4$ 的巧克力变为类型为 $8$ 的巧克力最少需要 $2$ 次交换。交换序列如下:$4 \rightarrow 0 \rightarrow 8$。 由 ChatGPT 4.1 翻译