0105 - Book Index

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

void Slove(void)	{
	string word;
	int page;
	map<string,vector<int> > index;

	index.clear();
	while (cin >> word >> page)	{
		index[word].push_back(page);
		sort( index[word].begin(),index[word].end() );
	}
	for (map< string,vector<int> >::iterator map_it=index.begin(); map_it!=index.end(); ++map_it)	{
		cout << (*map_it).first << endl;
		for (vector<int>::iterator vec_it=(*map_it).second.begin(); vec_it!=(*map_it).second.end(); ++vec_it)	{
			cout << (*vec_it);
			(vec_it==(*map_it).second.end()-1)? cout << endl : cout << " ";
		}
	}
}

int main(void)	{
	Slove();
	return 0;
}

語句とpage番号を入れる→並び換えを繰り返して表示する。