Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2010-03-26Member SRM465(DIV2)

SRM465 div2 第二問(500点)

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

http://www.topcoder.com/stat?c=problem_statement&pm=10840

塔の座標が与えられて、2つの塔を置こうとすると

サイズと位置が何パターン置けますかーな問題。

全ての座標に塔を建てようとして自滅。2つずつでよかったのに。

Challenge Phaseで500をみんな同じ解き方をしてて、

なんでこれでいいんだろう、と思い、

はじめて問題をまともに読む気になった。

敗因その二。


SysTestに通ったコードはこちら。


public class TurretPlacement {
	public long count(int[] x, int[] y) {
		int length = x.length;
		long answer = 0;
		for (int i = 0 ; i < length ; i++) {
			for (int j = i + 1 ; j < length ; j++) {
				long ax = x[i];
				long ay = y[i];
				long bx = x[j];
				long by = y[j];
				long numnum = (long) Math.sqrt(((ax - bx) * (ax - bx) + (ay - by) * (ay - by)) * 4);
				answer += numnum * (numnum - 1) / 2L;
			}
		}
		return answer;
	}
}

ねっ、簡単でしょ?