https://leetcode.com/problems/top-k-frequent-words/description/
class ComparisonClass { public: bool operator() (pair<int,string> p1, pair<int,string> p2) { return p1.first < p2.first || p1.first == p2.first && p1.second > p2.second; } }; class Solution { public: vector<string> topKFrequent(vector<string>& words, int k) { unordered_map<string,int> freq; for (const auto& w : words) freq[w]++; priority_queue<pair<int,string>, vector<pair<int,string>>, ComparisonClass> q; for (const auto& f : freq) q.push( { f.second, f.first }); vector<string> res; while (k-- > 0 && !q.empty()) { res.push_back(q.top().second); q.pop(); } return res; } };