Problem:
ワカサギ釣り大会

桧原湖でワカサギ釣り大会が行われました。一番多くのワカサギを獲得した人が優勝者です。

参加者番号と釣った匹数のリストを読み込み、優勝者の番号と釣った匹数を出力するプログラムを作成してください。優勝者が複数いる場合は、その中で参加者番号が最も小さい一人を出力してください。

入力

入力は以下の形式で与えられる。

n
a1 v1
a2 v2
:
an vn

n (1 ≤ n ≤ 20) は参加者の数、ai は参加者番号を表す。参加者番号は 1 以上 n 以下の異なる整数である。vi ( 0 ≤ vi ≤ 100) は参加者 ai が獲得した匹数である。

出力

優勝者の参加者番号と釣った匹数を空白区切りで１行に出力せよ。

入力例

6
1 14
2 25
3 42
4 11
5 40
6 37

出力例

3 42

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;


public class Main {

	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		ArrayList<String> array = new ArrayList<String>();

		try {
			String str = null;
			while ((str = br.readLine()) != null) {
				array.add(str);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		int N = Integer.parseInt(array.get(0));
		int maxNumber = -1;
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		for(int i = 1; i <= N; i++) {
			String[] data = array.get(i).split(" ");
			int id = Integer.parseInt(data[0]);
			map.put(id, Integer.parseInt(data[1]));
			if(maxNumber == -1 || (map.get(id) > map.get(maxNumber))) {
				maxNumber = id;
			} else if((map.get(id) == map.get(maxNumber)) && id < maxNumber){
				maxNumber = id;
			}
		}
		System.out.println(maxNumber + " " + map.get(maxNumber));
	}
}