yukicoder No.351 市松スライドパズル
☆2 ですが個人的には一番面白いと思ったので書いておきます(解法 1 行で終わっちゃいましたが)。
解法
最後に左上にあるセルが, 最初にどこにあるか, というのを考えれば良いです。
char s[1000100]; int k[1000010]; int main() { cin.tie(0); ios::sync_with_stdio(false); int H, W; cin >> H >> W; int N; cin >> N; int r = 0, c = 0; for (int i = 0; i < N; i++) { cin >> s[i] >> k[i]; } for (int i = N-1; i >= 0; i--) { if (s[i] == 'R') { if (k[i] == r) c = (c+W-1)%W; } else { if (k[i] == c) r = (r+H-1)%H; } } if ((r+c)%2) cout << "black" << endl; else cout << "white" << endl; return 0; }