AOJ_0105 Book Index

問題
解法
STLゲー。
map を使って単語と出現ページの情報を管理する。

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

typedef priority_queue<int, vector<int>, greater<int> > PAGE;
typedef map<string, PAGE> INDEX;
int main(){
	char b[100];
	int p;
	INDEX index;
	while(scanf("%s", b) != EOF){
		scanf("%d", &p);
		string bs;
		bs = string(b);
		INDEX::iterator it = index.find(bs);
		if(it != index.end()){
			(*it).second.push(p);
		}else{
			PAGE q;
			q.push(p);
			index.insert(INDEX::value_type(bs, q));
		}
		scanf("%c", b);
	}
	for(INDEX::iterator it = index.begin(); it != index.end(); it++){
		cout << (*it).first << endl;
		PAGE q = (*it).second;
		while(!q.empty()){
			printf("%d", q.top());
			q.pop();
			if(!q.empty()) printf(" ");
		}
		printf("\n");
	}
	return 0;
}