#include #include #include #include template std::ostream &operator<<(std::ostream &os, const std::vector& vec) { for(const auto &e : vec) os << e << ' '; os << "\n"; return os; } template void frequency_sort(std::vector& vec) { std::unordered_map m{}; for(const auto& e : vec) m[e]++; std::sort(vec.begin(),vec.end(),[&m](const T& a, const T& b){ return m[a] == m[b] ? b < a : m[a] < m[b]; }); std::cout << vec; } int main() { std::vector vec1{1,1,2,2,2,3}, vec2{2,3,1,3,2},vec3{-1,1,-6,4,5,-6,1,4,1}; frequency_sort(vec1); frequency_sort(vec2); frequency_sort(vec3); return 0; }