CF1742G.Orray

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

Orray

题目描述

给定一个由 nn 个非负整数组成的数组 aa

我们定义前缀 OR 数组 bb 为 $b_i = a_1~\mathsf{OR}~a_2~\mathsf{OR}~\dots~\mathsf{OR}~a_i$,其中 OR\mathsf{OR} 表示按位或运算。换句话说,数组 bb 是通过计算 aa 的每个前缀的按位或得到的。

你的任务是重新排列数组 aa 的元素,使得其前缀 OR 数组在字典序上最大。

如果在第一个不同的位置 xxyy 满足 xi>yix_i > y_i,则数组 xx 在字典序上大于数组 yy

输入格式

输入的第一行包含一个整数 tt1t1001 \le t \le 100),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n21051 \leq n \leq 2 \cdot 10^5),表示数组 aa 的长度。

每个测试用例的第二行包含 nn 个非负整数 a1,,ana_1, \ldots, a_n0ai1090 \leq a_i \leq 10^9)。

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

输出格式

对于每个测试用例,输出 nn 个整数,表示数组 aa 的任意一种重排方式,使得其前缀 OR 数组在字典序上最大。

说明/提示

由 ChatGPT 4.1 翻译

样例

5
4
1 2 4 8
7
5 1 2 3 4 5 5
2
1 101
6
2 3 4 2 3 4
8
1 4 2 3 4 5 7 1
8 4 2 1 
5 2 1 3 4 5 5 
101 1 
4 3 2 2 3 4 
7 1 4 2 3 4 5 1 

在线编程 IDE

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