#P15345. [TOIP 2025] 連序

[TOIP 2025] 連序

说明

一个非负整数的二进制表示可视为一 0101 字符串,左边为高位(most significant bit),右边为低位(least significant bit);若最多有 kk 个连续的位为 11,则称该数字的「连序」为 kk。今给定 nn 个非负整数,请依它们的「连序」由小到大排序;若两数字的连序相同,则先输出数值较小的。

举例来说,7712122727 的二进制表示分别为 (111)2{\left(111\right)}_2(1100)2{\left(1100\right)}_2(11011)2{\left(11011\right)}_2,可知三数的连序分别为 332222,其中 12122727 的连序相同,但 12<2712 < 27,故需依次输出 1212272777

输入格式

$$\begin{aligned} &n \\ &a_1 \; a_2 \; a_3 \; \cdots \; a_n \end{aligned}$$
  • nn 代表要排序的数字个数。
  • aia_i 代表第 ii 个要排序的数字。

输出格式

$$\begin{aligned} &s_1 \; s_2 \; s_3 \; \cdots \; s_n \end{aligned}$$
  • sis_i 代表按照题目要求排序后的第 ii 个数字。
3
7 12 27
12 27 7
5
1 2 3 4 5
1 2 4 5 3

提示

数据限制

  • 1n2×1051 \le n \le 2 \times {10}^5
  • 0ai<2300 \le a_i < 2^{30}
  • 所有输入的数皆为整数。

评分说明

本题共有四组子任务,条件限制如下所示。每一组可有一或多笔测试数据,该组所有测试数据皆需答对才会获得该组分数。

子任务 分数 额外输入限制
1 22 n2, ai<16n \le 2,\ a_i < 16
2 n2000, ai<216n \le 2\,000,\ a_i < 2^{16}
3 26 ai<216a_i < 2^{16}
4 30 无额外限制。