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; }