Codeforces #53 A "Square Earth?"

問題:http://www.codeforces.com/problemset/problem/57/A

ラクティス.

ある正方形の大きさとその周囲上の点二つの座標が与えられる.二つの点の距離を正方形の周囲上を通る線の長さとすると,与えられた二つの点の距離が最短となる距離を求める.

右回りと左回りの短いほうを求める.本番では同じ方向に回ることを考えてなくてテストケース4でアウト.

コード

import java.util.*;

public class A_SquareEarth {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt(), d[] = new int[2], r = 0;
		for (int i = 0; i < 2; ++i) {
			int x = s.nextInt(), y = s.nextInt();
			d[i] = x == 0 ? y : y == n ? n + x : x == n ? 3 * n - y : 4 * n - x;
		}
		System.out.println(Math.min(r = Math.abs(d[0] - d[1]), 4 * n - r));
	}
}