#include <unordered_map>
#include <iostream>
#include <set>
int main( ) {
std:: string input = "hello world" ;
std:: unordered_map < char , unsigned int > count;
for ( char character : input)
if ( character >= 'a' && character <= 'z' )
count[ character] ++ ;
std:: cout << "Unsorted list:" << std:: endl ;
for ( auto const & kv : count)
std:: cout << kv.first << " = " << kv.second << std:: endl ;
using myPair = std:: pair < char , unsigned int > ;
auto comp = [ ] ( const myPair& a, const myPair& b) {
return ( a.second > b.second || a.second == b.second && a.first < b.first ) ;
} ;
std:: set < myPair, decltype( comp) > sorted( comp) ;
for ( auto const & kv : count)
sorted.insert ( kv) ;
std:: cout << "Sorted list according to frequency then alphabetically:" << std:: endl ;
for ( auto const & kv : sorted)
std:: cout << kv.first << " = " << kv.second << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNldD4KCmludCBtYWluKCkgewoJc3RkOjpzdHJpbmcgaW5wdXQgPSAiaGVsbG8gd29ybGQiOwoKICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjaGFyLCB1bnNpZ25lZCBpbnQ+IGNvdW50OwogICAgZm9yIChjaGFyIGNoYXJhY3RlciA6IGlucHV0KQogICAgICAgIGlmIChjaGFyYWN0ZXIgPj0gJ2EnICYmIGNoYXJhY3RlciA8PSAneicpCiAgICAgICAgICAgIGNvdW50W2NoYXJhY3Rlcl0rKzsKCiAgICBzdGQ6OmNvdXQgPDwgIlVuc29ydGVkIGxpc3Q6IiA8PCBzdGQ6OmVuZGw7CiAgICBmb3IgKGF1dG8gY29uc3QgJmt2IDogY291bnQpCiAgICAgICAgc3RkOjpjb3V0IDw8IGt2LmZpcnN0IDw8ICIgPSAiIDw8IGt2LnNlY29uZCA8PCBzdGQ6OmVuZGw7CgogICAgdXNpbmcgbXlQYWlyID0gc3RkOjpwYWlyPGNoYXIsIHVuc2lnbmVkIGludD47CiAgICBhdXRvIGNvbXAgPSBbXShjb25zdCBteVBhaXImIGEsIGNvbnN0IG15UGFpciYgYikgewogICAgICAgIHJldHVybiAoYS5zZWNvbmQgPiBiLnNlY29uZCB8fCBhLnNlY29uZCA9PSBiLnNlY29uZCAmJiBhLmZpcnN0IDwgYi5maXJzdCk7CiAgICB9OwogICAgc3RkOjpzZXQ8bXlQYWlyLCBkZWNsdHlwZShjb21wKT4gc29ydGVkKGNvbXApOwogICAgZm9yKGF1dG8gY29uc3QgJmt2IDogY291bnQpCiAgICAgICAgc29ydGVkLmluc2VydChrdik7CgogICAgc3RkOjpjb3V0IDw8ICJTb3J0ZWQgbGlzdCBhY2NvcmRpbmcgdG8gZnJlcXVlbmN5IHRoZW4gYWxwaGFiZXRpY2FsbHk6IiA8PCBzdGQ6OmVuZGw7CiAgICBmb3IgKGF1dG8gY29uc3QgJmt2IDogc29ydGVkKQogICAgICAgIHN0ZDo6Y291dCA8PCBrdi5maXJzdCA8PCAiID0gIiA8PCBrdi5zZWNvbmQgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9