#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
int main()
{
std::vector<std::string> most { "lion","tiger","kangaroo",
"donkey","lion","tiger",
"lion","donkey","tiger"
};
std::map<std::string, int> src;
for(auto x:most)
++src[x];
std::multimap<int,std::string,std::greater<int> > dst;
std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()),
[] (const std::pair<std::string,int> &p) {
return std::pair<int,std::string>(p.second, p.first);
}
);
std::multimap<int,std::string>::iterator it = dst.begin();
for(int count = 0;count<3 && it !=dst.end();++it,++count)
std::cout<<it->second<<":"<<it->first<<std::endl;
}
CgogICAgI2luY2x1ZGU8aW9zdHJlYW0+CiAgICAjaW5jbHVkZTxhbGdvcml0aG0+CiAgICAjaW5jbHVkZTxtYXA+CiAgICAjaW5jbHVkZTx2ZWN0b3I+CiAgICAKICAgIGludCBtYWluKCkKICAgIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbW9zdCB7ICJsaW9uIiwidGlnZXIiLCJrYW5nYXJvbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9ua2V5IiwibGlvbiIsInRpZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW9uIiwiZG9ua2V5IiwidGlnZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGludD4gc3JjOwogICAgZm9yKGF1dG8geDptb3N0KQogICAgICAgICsrc3JjW3hdOwogICAgCiAgICBzdGQ6Om11bHRpbWFwPGludCxzdGQ6OnN0cmluZyxzdGQ6OmdyZWF0ZXI8aW50PiA+IGRzdDsKICAgIAogICAgc3RkOjp0cmFuc2Zvcm0oc3JjLmJlZ2luKCksIHNyYy5lbmQoKSwgc3RkOjppbnNlcnRlcihkc3QsIGRzdC5iZWdpbigpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgW10gKGNvbnN0IHN0ZDo6cGFpcjxzdGQ6OnN0cmluZyxpbnQ+ICZwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxpbnQsc3RkOjpzdHJpbmc+KHAuc2Vjb25kLCBwLmZpcnN0KTsKICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICBzdGQ6Om11bHRpbWFwPGludCxzdGQ6OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZHN0LmJlZ2luKCk7CiAgICAKICAgICBmb3IoaW50IGNvdW50ID0gMDtjb3VudDwzICYmIGl0ICE9ZHN0LmVuZCgpOysraXQsKytjb3VudCkKICAgICAgIHN0ZDo6Y291dDw8aXQtPnNlY29uZDw8IjoiPDxpdC0+Zmlyc3Q8PHN0ZDo6ZW5kbDsKICAgICAgCiAgICB9