题目名称 | 3801. [JZOI 2022 day2]按位排序 |
---|---|
输入输出 | bitsort.in/out |
难度等级 | ★★ |
时间限制 | 3000 ms (3 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | yuan 于2022-11-23加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
查看题解 | 分享题解 |
通过:1, 提交:1, 通过率:100% | ||||
yuan | 100 | 4.404 s | 3.90 MiB | C++ |
关于 按位排序 的近10条评论(全部评论) |
---|
鲍勃发明了一种神奇的排序算法:按位排序。用该算法对一个序列进行排序之后,拆出这个序列二进
制表示的每一位来看,都是有序的(升序或者降序都可以)。
聪明的你很快意识到,并不是所有的序列通过调换顺序都能达到二进制每一位都是有序的效果。
刚刚学习了编程知识的你决定将鲍勃的算法用代码实现出来,并向他证明有的序列是可以通过这种排序算
法产生结果,但是有些序列是不能产生正确结果的。
鲍勃正准备公开发表他的错误算法,请你赶快阻止他吧!
第一行输入一个正整数 $T (1 ≤ T ≤ 10)$,表示有 T 组数据。
对于每组数据,第一行一个整数 $n(1 ≤ n ≤ 2 × 10^5)$, 代表原始序列的长度。
其后一行 $n$ 个整数 $a_1, a_2, ..., a_n(0 ≤ a_i < 2^{30})$。
对于每组数据,输出一行:
如果无解,输出”$No$ $Solution$”(不包括引号)。
如果有解,输出一行 $n$ 个整数,代表排序后的结果。如果有多种解,请你输出字典序最小的那一种。
两个序列的字典序比较方式是从左到右找到第一个不同的元素,比较该元素的大小。
2 5 2 3 4 6 6 3 3 5 6
3 2 6 6 4 No Solution
点击下载样例2
测试点 $1$:$n \leq 10$,无特殊性质;
测试点 $2\leq4$:$n \leq 1000,a_i <= 2^{10} − 1$;
测试点 $5\leq7$:$n \leq 2 × 10^5 $,保证有解;
测试点 $8\leq10$:$n \leq 2 × 10^5 $,无特殊性质;