CF1682B.AND Sorting

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

AND Sorting

题目描述

给定一个从 00n1n-1 的排列 pp(每个数字恰好出现一次)。初始时,该排列未排序(即至少存在一个 1in11 \le i \le n-1 使得 pi>pi+1p_i > p_{i+1})。

对于某个非负整数 XX,如果可以通过以下操作若干次将排列 pp 排序,则称排列 ppXX-可排序的:

  • 选择两个下标 iijj1i<jn1 \le i < j \le n),满足 pi&pj=Xp_i \& p_j = X
  • 交换 pip_ipjp_j

这里的 &\& 表示按位与运算

请你求出最大的 XX,使得排列 ppXX-可排序的。可以证明,总存在某个 XX 使得 ppXX-可排序的。

输入格式

输入包含多组测试数据。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试数据的组数。

每组测试数据的第一行包含一个整数 nn2n21052 \le n \le 2 \cdot 10^5),表示排列的长度。

第二行包含 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n0pin10 \le p_i \le n-1,所有 pip_i 互不相同),表示排列 pp。保证 pp 未排序。

保证所有测试数据中 nn 的总和不超过 21052 \cdot 10^5

输出格式

对于每组测试数据,输出一个整数,表示最大的 XX,使得排列 ppXX-可排序的。

说明/提示

在第一个测试用例中,排列 pp 只有在 X=0X=0X=2X=2 时是 XX-可排序的,最大值为 22

使用 X=0X=0 排序的过程如下:

  • 交换 p1p_1p4p_4p=[2,1,3,0]p = [2, 1, 3, 0]
  • 交换 p3p_3p4p_4p=[2,1,0,3]p = [2, 1, 0, 3]
  • 交换 p1p_1p3p_3p=[0,1,2,3]p = [0, 1, 2, 3]

使用 X=2X=2 排序的过程如下:

  • 交换 p3p_3p4p_4p=[0,1,2,3]p = [0, 1, 2, 3]

在第二个测试用例中,必须交换 p1p_1p2p_2,这只有在 X=0X=0 时才可能。

由 ChatGPT 4.1 翻译

样例

4
4
0 1 3 2
2
1 0
7
0 1 2 3 5 6 4
5
0 3 2 1 4
2
0
4
1

在线编程 IDE

建议全屏模式获得最佳体验