Yukicoder No.351 市松スライドパズル
python等のllではtleる。pypy2なら通るらしいが、私がpypy3で投げたときはだめだった。
No.351 市松スライドパズル
解法
逆からやればよい。$O(N)$。
実装
pythonはtleる。
#include <iostream>
#include <vector>
#define repeat(i,n) for (int i = 0; (i) < (n); ++(i))
#define repeat_reverse(i,n) for (int i = (n)-1; (i) >= 0; --(i))
using namespace std;
int main() {
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
int h, w; cin >> h >> w;
int n; cin >> n;
vector<char> s(n);
vector<int> k(n);
repeat (i,n) cin >> s[i] >> k[i];
int y = 0, x = 0;
repeat_reverse (i,n) {
if (s[i] == 'R' and y == k[i]) {
x = (x - 1 + w) % w;
} else if (s[i] == 'C' and x == k[i]) {
y = (y - 1 + h) % h;
}
}
cout << (y % 2 == x % 2 ? "white" : "black") << endl;
return 0;
}