1839: 【编程入门】臻臻的烦恼

Memory Limit:16 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:18 Solved:5

Description

最近臻臻遇到了烦恼。事缘是这样的:

给定一个整数数组,根据数组元素的二进制表示中的1的位数(设置位)对数组进行排序(按降序)。

注意:对于在其二进制表示中具有相同设置位数的整数,根据它们在原始数组中的位置进行排序,即稳定排序。

 例如:数据[5 2 3 9 4 6 7 15 32],经过排序后的为[15 7 5 3 9 6 2 4 32] 

解释:15对应的二进制有4个1,而2,4,32对应的二进制只有1个1,但原先的顺序是2,4,32,我们要保持原先的顺序不变。

同样5,3,9,6有2个1,也要保持原来顺序不变。 

数据范围:数组中数据个数N<=10的6次方,所有数据大于1小于10的9次方.

Input

第一行,输入一个整数n。

接下来输入n个整数。表示要排序的数。(注意要按转二进制后位数里面的1的数量按多到小排序)

Output

排序好的数列。用空格隔开。

Sample Input Copy

9
5 2 3 9 4 6 7 15 32

Sample Output Copy

15 7 5 3 9 6 2 4 32

HINT

数据范围:数组中数据个数N<=10的6次方,所有数据大于1小于10的9次方.