AOJ 0242 Input Candidates

問題概要

読める

方針

stringstream便利.
multimapで自動的にソートしてもらうようにした.

int main()
{
    int n, i;
    char k;
    string s;
    vector<string> vs;
    map<string, int> ms;
    multimap<int, string> mi;

    while(~scanf("%d", &n), n)
    {
        cin.ignore();

        for(i = 0; i < n; i++)
        {
            getline(cin, s);

            stringstream e(s);
            while(e >> s)
                vs.push_back(s);
        }

        scanf("%c", &k);

        for(i = 0; i < vs.size(); i++)
            if(vs[i][0] == k)
                ms[vs[i]]--;

        for(map<string, int> :: iterator it = ms.begin(); it != ms.end(); it++)
            mi.insert(make_pair(it -> second, it -> first));

        i = 0;

        if(ms.empty())
            printf("NA");

        for(map<int, string>::iterator it = mi.begin(); it != mi.end() && i < 5; it++, i++)
            cout << (i ? " " : "") << (it -> second);
        
        puts("");

        vs.clear();
        ms.clear();
        mi.clear();
    }
}