Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2010-02-20[復習] SRM459、SRM461

SRM459 div2 第二問(500点)

| SRM459 div2 第二問(500点) - hama_DU@TopCoderへの道 を含むブックマーク はてなブックマーク - SRM459 div2 第二問(500点) - hama_DU@TopCoderへの道

http://topcoder.g.hatena.ne.jp/hama_DU/20100121/1264055520

http://www.topcoder.com/stat?c=problem_statement&pm=10682&rd=14145

Xの値は負でも小数でも良いので、結局-0.5から0.5ずつ増やす方針で実装。


import java.util.HashMap;

public class Inequalities {
	public int maximumSubset(String[] inequalities) {
		int size = inequalities.length;
		String[] eq = new String[size];
		int[] values = new int[size];

		int i = 0;
		for (String inequality : inequalities) {
			String[] elements = inequality.split(" ");
			eq[i] = elements[1];
			values[i] = Integer.valueOf(elements[2]);
			i++;
		}

		int max = 0;
		for (double x = -0.5 ; x <= 1000.5 ; x += 0.5 ) {
			int forthis = 0;
			for (i = 0 ; i < size ; i++) {
				if ("=".equals(eq[i]) && x == values[i]) {
					forthis++;
				} else if (">=".equals(eq[i]) && x >= values[i]) {
					forthis++;
				} else if (">".equals(eq[i]) && x > values[i]) {
					forthis++;
				} else if ("<".equals(eq[i]) && x < values[i]) {
					forthis++;
				} else if ("<=".equals(eq[i]) && x <= values[i]) {
					forthis++;
				}
			}

			if (max < forthis) {
				max = forthis;
			}
		}

		return max;
	}
}