Submission

Status:

--------------------

Subtask/Task Score:

0/100

Score: 0

User: iminyourwall

Problemset: Othello

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-12 14:53:20

#include <bits/stdc++.h>
using namespace std;

pair<int,int> ply;
char turn = 'B';
vector<string>mp;
vector<string>mpt;
char ch;

int mx[] = {1,1,1,0,0,-1,-1,-1};
int my[] = {-1,0,1,-1,1,-1,0,1};

void dbg(){
	cout << "\n";
	for (int i=1; i<=8; i++){
		for (int j=1; j<=8; j++){
			cout << mp[i][j];
		}
		cout << "\n";
	}
	//cout << "\n";
}

void check(int x, int y){
	for (int i=0; i<8; i++){
		if (mp[x+mx[i]][y+my[i]] == turn || mp[x+mx[i]][y+my[i]] == '_')continue;
		/*else if (mp[x][y] == mp[x+2*mx[i]][y+2*my[i]]){
			mp[x+mx[i]][y+my[i]] = turn;
			check(x+(2*mx[i]), y+(2*my[i]));
		}*/
		mpt = mp;
		int tx = 0, ty = 0, x2 = x+mx[i], y2 = y+my[i];
		while (x+tx > 0 && x+tx < 9 && y+ty > 0 && y+ty < 9){
			if (mp[x2+tx][y2+ty] == '_')break;
			else if (mp[x2+tx][y2+ty] != turn)mpt[x2+tx][y2+ty] = turn;
			else if (mp[x2+tx][y2+ty] == turn){
				mp = mpt;
				break;
			}
			tx += mx[i];
			ty += my[i];
		}
	}
}

void play(int x, int y){
	if (mp[x][y] == turn)return;
	mp[x][y] = turn;
	check(x,y);
	//dbg();
}

int main(){
	for (int i=0; i<10; i++){
		mp.push_back("");
		for (int j=0; j<10; j++){
			mp[i]+='_';
		}
	}
	for (int i=1; i<=8; i++){
		for (int j=1; j<=8; j++){
			cin >> mp[i][j];
		}
	}
	while (true){
		cin >> ply.first >> ply.second;
		if (ply.first<0 || ply.second <0 || ply.first > 7 || ply.second > 7)break;
		play(ply.first+1, ply.second+1);
		if (turn == 'B')turn = 'W';
		else if (turn == 'W')turn = 'B';
	}
	int cw=0, cb=0;
	for (int i=1; i<=8; i++){
		for (int j=1; j<=8; j++){
			if (mp[i][j] == 'B')cb++;
			else if (mp[i][j] == 'W')cw++;
		}
	}
	dbg();
	if (cb > cw)cout << "black wins";
	else if (cb < cw)cout << "white wins";
	else cout << "tie";
}