結果
| 問題 |
No.351 市松スライドパズル
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-03-12 00:01:19 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,367 bytes |
| コンパイル時間 | 1,477 ms |
| コンパイル使用メモリ | 162,128 KB |
| 実行使用メモリ | 13,884 KB |
| 最終ジャッジ日時 | 2024-09-25 01:34:00 |
| 合計ジャッジ時間 | 6,095 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 9 TLE * 1 -- * 7 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using int64 = int64_t;
#define times(n, i) for (int i = 0; i < n; i++)
#define range(n, m, i) for (int i = n; i < m; i++)
#define upto(n, m, i) for (int i = n; i <= m; i++)
#define downto(n, m, i) for (int i = n; i >= m; i--)
#define foreach(xs, x) for (auto &x : xs)
#define all(xs) (xs).begin(), (xs).end()
#define sortall(xs) sort(all(xs))
#define reverseall(xs) reverse(all(xs))
#define uniqueall(xs) erase(unique(all(xs)), (xs).end())
int64 mod10e9_7 = 1000000007;
int main()
{
int h, w, n;
cin >> h >> w >> n;
vector<int> d(h);
times(h, y) {
d[y] = 0;
for (int i = (y + ((w+1)%2))%2; i < w; i += 2) {
d[y] += 1 << i;
}
}
times(n, i) {
char c; int v;
cin >> c >> v;
if (c == 'R') {
int b = d[v] & 1;
d[v] >>= 1;
d[v] += (b << (w-1));
}
else {
v = w-1 - v;
int b = (d[h-1] >> v) & 1;
downto(h-1, 1, y) {
if ((d[y] >> v) & 1 == 1)
d[y] -= (1 << v);
d[y] += d[y-1] & (1 << v);
}
if ((d[0] >> v) & 1 == 1)
d[0] -= (1 << v);
d[0] += (b << v);
}
}
cout << ((d[0] & (1 << (w-1))) == 0 ? "black" : "white") << endl;
return 0;
}