結果

提出番号 1007
提出者 kotamanegi
言語 C++
提出日時 2017-08-05 23:56:40
問題名 (42)オセロ
結果 WA
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 2ms 7424KB
2 WA 0% 2ms 8304KB
3 WA 0% 2ms 7952KB
4 WA 0% 2ms 7408KB
5 WA 0% 2ms 7712KB

ソースコード

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
#include <utility>
#include <functional>
#include <cstring>
#include <queue>
#include <stack>
#include <math.h>
#include <iterator>
#include <vector>
#include <string>
#include <set>
#include <math.h>
#include <iostream> 
#include <random>
#include<map>
#include <iomanip>
#include <time.h>
#include <stdlib.h>
#include <list>
#include <typeinfo>
#include <list>
#include <set>
#include <cassert>
#include<fstream>
#include <unordered_map>  
using namespace std;
#define eps 0.00000001
#define LONG_INF 10000000000000000
#define GOLD 1.61803398874989484820458
#define MAX_MOD 1000000007
#define f(n) for(int i=0;i<n;++i)
#define REP(i,n) for(long long i = 0;i < n;++i)
map<pair<int, int>, int> grid;
pair<int, int> vary[8] = { {1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,-1},{-1,0},{-1,1} };
pair<int, int> sum(pair<int, int> a, pair<int, int> b) {
	return make_pair(a.first + b.first, a.second + b.second);
}
int main() {
	REP(i, 8) {
		string s;
		cin >> s;
		REP(q, 8) {
			if (s[q] == 'b') {
				grid[make_pair(i, q)] = 1;
			}else if(s[q] == 'w'){
				grid[make_pair(i, q)] = 2;
			}
		}
	}
	int num;
	cin >> num;
	string s;
	cin >> s;
	pair<int, int> now = {s[1]-'1',s[0] - 'A'};
	grid[now] = num + 1;
	for (int i = 0;i < 8;++i) {
		pair<int, int> copy = now;
		while (true) {
			copy = sum(copy, vary[i]);
			if (grid[copy] == 0) goto failed;
			if (grid[copy] == num + 1) break;
		}
		copy = now;
		while (true) {
			copy = sum(copy, vary[i]);
			if (grid[copy] == 0) goto failed;
			if (grid[copy] == num + 1) break;
			grid[copy] = num+1;
		}
	failed:;
	}
	for (int i = 0;i < 8;++i) {
		for (int q = 0;q < 8;++q) {
			if (grid[make_pair(i, q)] == 0) {
				cout << "-";
			}else if(grid[make_pair(i,q)] == 1){
				cout << "w";
			}
			else cout << "b";
		}
		cout << endl;
	}
	return 0;
}