結果
| 問題 | 
                            No.351 市松スライドパズル
                             | 
                    
| コンテスト | |
| ユーザー | 
                             kapo
                         | 
                    
| 提出日時 | 2016-05-16 01:52:59 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 729 ms / 2,000 ms | 
| コード長 | 1,033 bytes | 
| コンパイル時間 | 823 ms | 
| コンパイル使用メモリ | 73,504 KB | 
| 実行使用メモリ | 402,492 KB | 
| 最終ジャッジ日時 | 2024-09-25 03:01:43 | 
| 合計ジャッジ時間 | 8,166 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 17 | 
ソースコード
#include <iostream>
#include <vector>
#include <stack>
#include <utility>
using namespace std;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define pb push_back
void row_r(vector<int> &v, int w)
{
	rep(i, 0, w) v[i] ? v[i] = 0 : v[i] = 1;
}
int main(void)
{
	int i, j, h, w, n, k;
	char s;
	cin >> h >> w >> n;
	vector<vector<int> > vv;
	vector<int> v = { 1 };
	rep(i, 1, w) v[i - 1] ? v.pb(0) : v.pb(1);
	vv.pb(v);
	rep(i, 1, h) { row_r(v, w); vv.pb(v); }
	stack<pair<char, int> > st;
	pair<char, int> pa;
	pair<int, int> pos;
	pos.first = 0; pos.second = 0;
	rep(i, 0, n) {
		cin >> s >> k;
		pa.first = s;  // h
		pa.second = k; // w
		st.push(pa);
	}
	rep(i, 0, n) {
		pa = st.top();
		st.pop();
		if (pa.first == 'C' && pa.second == pos.second) {
			if (pos.first == 0) pos.first = h-1;
			else pos.first--;
		}
		else if (pa.first == 'R' && pa.second == pos.first) {
			if (pos.second == 0) pos.second = w-1;
			else pos.second--;
		}
	}
	(vv[ pos.first ][ pos.second ]) ? printf("white\n") : printf("black\n");
	return 0;
}
            
            
            
        
            
kapo