#include <bits/stdc++.h>
using namespace std;
// function to sort the array according
// to the number of set bits in elements
void sortArr(long long int arr[], long long int n)
{
multimap<long long int, long long int> map;
for (long long int i = 0; i < n; i++) {
long long int count = 0;
long long int k = arr[i];
// Counting no of setBits in arr[i]
while (k) {
k = k & k - 1;
count++;
}
// The count is subtracted from 32
// because the result needs
// to be in descending order
map.insert(make_pair(count, arr[i]));
}
// Printing the numbers in descending
// order of set bit count
for (auto it = map.begin(); it != map.end(); it++) {
cout << (*it).second << " ";
}
}
// Driver code
int main()
{
long long int arr[] = { 5, 4, 3, 9, 2, 6, 7, 15, 32 };
long long int n = sizeof(arr) / sizeof(arr[0]);
sort(arr,arr+n);
sortArr(arr, n);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKICAKLy8gZnVuY3Rpb24gdG8gc29ydCB0aGUgYXJyYXkgYWNjb3JkaW5nIAovLyB0byB0aGUgbnVtYmVyIG9mIHNldCBiaXRzIGluIGVsZW1lbnRzIAp2b2lkIHNvcnRBcnIobG9uZyBsb25nIGludCBhcnJbXSwgbG9uZyBsb25nIGludCBuKSAKeyAKICAgIG11bHRpbWFwPGxvbmcgbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQ+IG1hcDsgCiAgCiAgICBmb3IgKGxvbmcgbG9uZyBpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsgCiAgICAgICAgbG9uZyBsb25nIGludCBjb3VudCA9IDA7IAogICAgICAgIGxvbmcgbG9uZyBpbnQgayA9IGFycltpXTsgCiAgCiAgICAgICAgLy8gQ291bnRpbmcgbm8gb2Ygc2V0Qml0cyBpbiBhcnJbaV0gCiAgICAgICAgd2hpbGUgKGspIHsgCiAgICAgICAgICAgIGsgPSBrICYgayAtIDE7IAogICAgICAgICAgICBjb3VudCsrOyAKICAgICAgICB9IAogIAogICAgICAgIC8vIFRoZSBjb3VudCBpcyBzdWJ0cmFjdGVkIGZyb20gMzIgCiAgICAgICAgLy8gYmVjYXVzZSB0aGUgcmVzdWx0IG5lZWRzIAogICAgICAgIC8vIHRvIGJlIGluIGRlc2NlbmRpbmcgb3JkZXIgCiAgICAgICAgbWFwLmluc2VydChtYWtlX3BhaXIoY291bnQsIGFycltpXSkpOyAKICAgIH0gCiAgCiAgICAvLyBQcmludGluZyB0aGUgbnVtYmVycyBpbiBkZXNjZW5kaW5nIAogICAgLy8gb3JkZXIgb2Ygc2V0IGJpdCBjb3VudCAKICAgIGZvciAoYXV0byBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBtYXAuZW5kKCk7IGl0KyspIHsgCiAgICAgICAgY291dCA8PCAoKml0KS5zZWNvbmQgPDwgIiAiOyAKICAgIH0gCn0gCiAgCi8vIERyaXZlciBjb2RlIAppbnQgbWFpbigpIAp7IAogICAgbG9uZyBsb25nIGludCBhcnJbXSA9IHsgNSwgNCwgMywgOSwgMiwgNiwgNywgMTUsIDMyIH07CiAgICBsb25nIGxvbmcgaW50IG4gPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOyAKCXNvcnQoYXJyLGFycituKTsKICAgIHNvcnRBcnIoYXJyLCBuKTsgCiAgCiAgICByZXR1cm4gMDsgCn0g