#include <map>
#include <bitset>
#include <iostream>
int main() {
auto comp = [](int a, int b) { return std::bitset<32>(a).count() < std::bitset<32>(b).count(); };
std::map<int, int, decltype(comp)> m {{{13, 1}, {15, 1}, {17, 1}}, comp};
for (auto const &p : m)
std::cout << p.first << " (" << std::bitset<32>(p.first).count() << " bits)"<< std::endl;
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKSB7CiAgICBhdXRvIGNvbXAgPSBbXShpbnQgYSwgaW50IGIpIHsgcmV0dXJuIHN0ZDo6Yml0c2V0PDMyPihhKS5jb3VudCgpIDwgc3RkOjpiaXRzZXQ8MzI+KGIpLmNvdW50KCk7IH07CiAgICBzdGQ6Om1hcDxpbnQsIGludCwgZGVjbHR5cGUoY29tcCk+IG0ge3t7MTMsIDF9LCB7MTUsIDF9LCB7MTcsIDF9fSwgY29tcH07CgogICAgZm9yIChhdXRvIGNvbnN0ICZwIDogbSkKICAgICAgICBzdGQ6OmNvdXQgPDwgcC5maXJzdCA8PCAiICgiIDw8IHN0ZDo6Yml0c2V0PDMyPihwLmZpcnN0KS5jb3VudCgpIDw8ICIgYml0cykiPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9