AOJ0105 Book Index

問題リンク Book Index

  • 解法

Map>は語句がキーで、ページのリストがバリューです。
語句はプライオリティキューにも追加され、語句の昇順に取り出せます。
取り出したページのリストはCollections.sort()でページの昇順にできます。

  • ソース
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Scanner;

//Book Index
public class AOJ0105 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Map<String, List<Integer>> ref = new HashMap<String, List<Integer>>();
		PriorityQueue<String> q = new PriorityQueue<String>();
		while(sc.hasNext()){
			String s = sc.next();
			if(ref.containsKey(s)){
				ref.get(s).add(sc.nextInt());
			}
			else{
				q.add(s);
				List<Integer> list = new ArrayList<Integer>();
				list.add(sc.nextInt());
				ref.put(s, list);
			}
		}
		while(!q.isEmpty()){
			String s = q.poll();
			List<Integer> list = ref.get(s);
			System.out.println(s);
			Collections.sort(list);
			boolean f = true;
			for(int v:list){
				if(!f)System.out.print(" ");
				f = false;
				System.out.print(v);
			}
			System.out.println();
		}
	}
}