#include <iostream>
#include <vector>
#include <map>
#include <list>
template<typename T>
typename T::value_type most_frequent_element(T const& v)
{
std::map<typename T::value_type, int> frequencyMap;
int maxFrequency = 0;
typename T::value_type mostFrequentElement{};
for (auto&& x : v)
{
int f = ++frequencyMap[x];
if (f > maxFrequency)
{
maxFrequency = f;
mostFrequentElement = x;
}
}
return mostFrequentElement;
}
#include <iostream>
int main()
{
std::vector<int> v { 1, 3, 5, 6, 6, 2, 3, 4, 3, 5 };
std::cout << most_frequent_element(v) << std::endl;
std::list<int> l { 6, 3, 5, 6, 6, 2, 3, 4, 3, 6 };
std::cout << most_frequent_element(l) << std::endl;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAjaW5jbHVkZSA8bWFwPgogICAgI2luY2x1ZGUgPGxpc3Q+CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUgbW9zdF9mcmVxdWVudF9lbGVtZW50KFQgY29uc3QmIHYpCiAgICB7CiAgICAgICAgc3RkOjptYXA8dHlwZW5hbWUgVDo6dmFsdWVfdHlwZSwgaW50PiBmcmVxdWVuY3lNYXA7CiAgICAgICAgaW50IG1heEZyZXF1ZW5jeSA9IDA7CiAgICAgICAgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZSBtb3N0RnJlcXVlbnRFbGVtZW50e307CiAgICAgICAgZm9yIChhdXRvJiYgeCA6IHYpCiAgICAgICAgewogICAgICAgICAgICBpbnQgZiA9ICsrZnJlcXVlbmN5TWFwW3hdOwogICAgICAgICAgICBpZiAoZiA+IG1heEZyZXF1ZW5jeSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWF4RnJlcXVlbmN5ID0gZjsKICAgICAgICAgICAgICAgIG1vc3RGcmVxdWVudEVsZW1lbnQgPSB4OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgCiAgICAgICAgcmV0dXJuIG1vc3RGcmVxdWVudEVsZW1lbnQ7CiAgICB9CgogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgoKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IHYgeyAxLCAzLCA1LCA2LCA2LCAyLCAzLCA0LCAzLCA1IH07CiAgICAgICAgc3RkOjpjb3V0IDw8IG1vc3RfZnJlcXVlbnRfZWxlbWVudCh2KSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgCiAgICAgICAgc3RkOjpsaXN0PGludD4gbCB7IDYsIDMsIDUsIDYsIDYsIDIsIDMsIDQsIDMsIDYgfTsKICAgICAgICBzdGQ6OmNvdXQgPDwgbW9zdF9mcmVxdWVudF9lbGVtZW50KGwpIDw8IHN0ZDo6ZW5kbDsKICAgIH0K