Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2010-03-07[過去問]SRM463(DIV2)

SRM463 div2 第一問(250点)

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

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

簡単。


public class BunnyPuzzle {
	public int theCount(int[] bunnies) {
		int bunnyNum = bunnies.length;
		int count = 0;
		for (int i = 0 ; i < bunnyNum ; i++) {
			// 左端のバニーちゃんは左に飛べないので無視
			if (i > 0) {
				// 左から2番目のバニーちゃんは必ず左に飛べる。
				// それ以外は自分の2つ隣のバニーちゃんを飛び越さないかチェックする
				if (i > 1) {
					int to = bunnies[i - 1] - (bunnies[i] - bunnies[i - 1]);
					if (bunnies[i - 2] < to) {
						count++;
					}
				} else {
					count++;
				}
			}

			// 右端のバニーちゃんは右に飛べないので無視
			if (i < bunnyNum - 1) {
				// 右から2番目のバニーちゃんは必ず右に飛べる。
				// それ以外は自分の2つ隣のバニーちゃんを飛び越さないかチェックする
				if (i < bunnyNum - 2) {
					int to = bunnies[i + 1] + (bunnies[i + 1] - bunnies[i]);
					if (to < bunnies[i + 2]) {
						count++;
					}
				} else {
					count++;
				}
			}
		}
		return count;
	}

}