CODE FESTIVAL 2017 qual A,D: Four Coloring

http://code-festival-2017-quala.contest.atcoder.jp/tasks/code_festival_2017_quala_d

45度回転をするとマンハッタン距離|x1-x2|+|y1-y2|がチェビシェフ距離max(|x1-x2|,|y1-y2|)に言い換えられて見通しが良くなります。
45度回転したGrid上でD*Dの正方形ごとに同じ色を塗っていけばよいです。市松模様みたいな感じになります。

こういう一つ例を構築する問題をロシアゲーというらしいです。

あと忘れがちですが、(a % b + b) % bとすればaが負の時でもaをbで割ったあまりが求められます。

int N, M, D;
char C[2][2] = {
	{'R', 'Y'},
	{'G', 'B'}
};

void solve() {
	cin >> N >> M >> D;
	rep(i, 0, N) {
		string res;
		rep(j, 0, M) {
			int d = 2  * D;
			int x = ((i - j) % d + d) % d;
			int y = (i + j) % d;
			res += C[x < D][y < D];
		}
		cout << res << "\n";
	}
}

ロシアゲー難しい…