TopCoder SRM 345 Div1 Easy Pathfinding

問題

(0,0)から(x,y)移動したい。
一回の移動で(a+1,b),(a-1,b),(a,b+1),(a,b-1)の4方向のいずれかへ進むことができるが、
y座標が奇数のときはx軸の正の方向へ移動することはできない。
y座標が偶数のときはx軸の負の方向へ移動することはできない。
y座標が奇数のときはy軸の正の方向へ移動することはできない。
y座標が偶数のときはy軸の負の方向へ移動することはできない。

ゴールへ辿り着くのに必要な移動回数の最小値を求めよ。

制約条件

-10^6≦x,y≦10^6

方針

x,yの正負で場合分けし、更にx,yの偶奇で場合わけする。

ソースコード

class Pathfinding {
	public:
	int getDirections(int x, int y) 
	{
		if(x>=0&&y>=0)return x%2&&y%2?x+y+2:x+y;
		if(x>0)return x%2==0&&y%2?x-y+2:x-y;
		if(y>0)return x%2&&y%2==0?-x+y+2:-x+y;
		return x%2==0&&y%2==0?-x-y+4:-x-y+2;
	}
};