SRM559 Div1 Easy - HyperKnight

問題

サイズh*wのボードがある
今いるマスから(±a, ±b) or (±b, ±a)に移動できるハイパーナイトというコマがある
このコマのあるマスからの1手での移動先は最大8通りあり得るが、ボードからはみ出すような動きはできない
このコマが1手でk通りのマスに移動できるようなマスが何個あるか求めよ

1 <= a, b, x, y <= 10^9
0 <= k <= 8

解法

実験からのしょうもない場合分け

class HyperKnight {
public:
	ll countCells(int A, int B, int X, int Y, int k) {
		ll a = A, b = B, x = X, y = Y;
		if (a<b) swap(a,b);
		if (x<y) swap(x,y);
		if (k==8) return (x-a*2)*(y-a*2);
		if (k==6) return (x+y-a*4)*(a-b)*2;
		if (k==4) return (x+y-a*4)*b*2 + (a-b)*(a-b)*4;
		if (k==3) return (a-b)*b*8;
		if (k==2) return b*b*4;
		return 0;
	}
};

https://community.topcoder.com/stat?c=problem_statement&pm=12201&rd=15181