Codeforces #82 (div2) B "Choosing Laptop"

問題:http://codeforces.com/contest/106/problem/B

ラップトップの数とプロセッサ速度,RAM,HDDとコストをセットとしたデータが与えられる.このうちひとつを選ぶときに条件として「プロセッサ速度,RAM,HDDのいずれも他のラップトップに負けているようなラップトップは選択候補に入らない」,「選択候補のうち最も安いラップトップを選ぶ」があるので,選択されるラップトップの番号を求める.

単純に全部のスペックをチェックして選択候補に含まないものを除外したあとに最安値のラップトップを選択する.

import java.util.*;

public class B {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		int[][] a = new int[n][];
		for (int i = 0; i < n; ++i) {
			a[i] = new int[] { s.nextInt(), s.nextInt(), s.nextInt(),
					s.nextInt() };
		}
		boolean[] b = new boolean[n];
		Arrays.fill(b, true);
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				int k = 0;
				for (; k < 3; ++k) {
					if (a[i][k] >= a[j][k]) {
						break;
					}
				}
				if (k == 3) {
					b[i] = false;
					break;
				}
			}
		}
		int min = Integer.MAX_VALUE, mini = -1;
		for (int i = 0; i < n; ++i) {
			if (b[i] && min > a[i][3]) {
				min = a[i][3];
				mini = i;
			}
		}
		System.out.println(mini+1);
	}

}