Hacker News new | ask | show | jobs
by kragen 4720 days ago
Not bad. I think it would be a little simpler and faster with:

    while (cin >> s) M[s]++;
    for (map<string,int>::iterator i = M.begin(); i != M.end(); i++) {
             S.insert(make_pair(i->second, i->first));
    }
But maybe there's a downside to that approach that isn't obvious to me?
1 comments

If you move what while (topK--) into the map loop , it becomes an online code for topK whereas what you wrote is an offline . If you want offline then pushing it into a priority_queue and then popping it out would be much faster.