motu*2

DIV1目指して問題を解き続ける

AOJ 0105 Book Index

概要

語句とページ番号がいくつか与えられる。
辞書順に語句を表示し、対応するページ番号すべてを
昇順で出力する。

解法

STLのmapを使ってやる

コード

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
using namespace std;

int main()
{
    map<string, vector<int> > m;
    string s;
    int page;
    while (1) {
        cin >> s >> page;
        if (cin.eof()) break;
        m[s].push_back(page);
    }
    map<string, vector<int> >::iterator it = m.begin();
    while (it != m.end())
    {
        cout << (*it).first << endl;
        vector<int> v = (*it).second;
        sort(v.begin(), v.end());
        int size = v.size();
        for (int i = 0; i < size; i++) {
            if (i < size-1) printf("%d ", v[i]);
            else printf("%d\n", v[i]);
        }
        ++it;
    }

    return 0;
}