Submission

Status:

PP--xx-Px-P--x-xx-xP

Subtask/Task Score:

25/100

Score: 25

User: Prap

Problemset: Othello

Language: cpp

Time: 0.004 second

Submitted On: 2026-04-29 12:09:31

#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector <string> table;
int xcoord, ycoord;
void check(int whoturn) {
	char oppoplace = 'W';
	char whoplace = 'B';
	if (whoturn%2==1) {
		whoplace = 'W';
		oppoplace = 'B';
	}
	//up
	for (int i = ycoord-2; i>=0; i--) {
		if (table[i][xcoord] == whoplace) {
			for (int j = i+1; j<ycoord; j++) {
				table[j][xcoord] = whoplace;
			}
			i = -1;
		}
		else if (table[i][xcoord] == oppoplace) {
			
		}
		else if (table[i][xcoord] == '_') {
			i = -1;
		}
	}
	//down
	for (int i = ycoord+2; i<8; i++) {
		if (table[i][xcoord] == whoplace) {
			for (int j = i+1; j<ycoord; j--) {
				table[j][xcoord] = whoplace;
			}
			i = 9;
		}
		else if (table[i][xcoord] == oppoplace) {
			
		}
		else if (table[i][xcoord] == '_') {
			i = 9;
		}
	}
	//left
	for (int i = xcoord-2; i>=0; i--) {
		if (table[ycoord][i] == whoplace) {
			for (int j = i+1; j<xcoord; j++) {
				table[ycoord][j] = whoplace;
			}
			i = -1;
		}
		else if (table[ycoord][i] == oppoplace) {
			
		}
		else if (table[ycoord][i] == '_') {
			i = -1;
		}
	}
	//right
	for (int i = xcoord+2; i<8; i++) {
		if (table[ycoord][i] == whoplace) {
			for (int j = i-1; j>xcoord; j--) {
				table[ycoord][j] = whoplace;
			}
			i = 9;
		}
		else if (table[ycoord][i] == oppoplace) {
			
		}
		else if (table[ycoord][i] == '_') {
			i = 9;
		}
	}
	int C_max = ycoord;
	int C_min = xcoord;
	if (xcoord > ycoord) {
		C_max = xcoord;
		C_min = ycoord;
	}
	//right down
	for (int i = 2; i+C_max<8; i++) {
		if (table[ycoord+i][xcoord+i] == whoplace) {
			for (int j = i-1; j>0; j--) {
				table[ycoord+j][xcoord+j] = whoplace;
			}
			break;
		}
		else if (table[ycoord+i][xcoord+i] == oppoplace) {
			
		}
		else if (table[ycoord+i][xcoord+i] == '_') {
			break;
		}
	}
	//left up
	for (int i = 2; i<=C_min; i++) {
		if (table[ycoord-i][xcoord-i] == whoplace) {
			for (int j = 1; j<i; j++) {
				table[ycoord+j][xcoord+j] = whoplace;
			}
			break;
		}
		else if (table[ycoord+i][xcoord+i] == oppoplace) {
			
		}
		else if (table[ycoord+i][xcoord+i] == '_') {
			break;
		}
	}
	//left down
	for (int i = 2; i<=C_min; i++) {
		if (table[ycoord+i][xcoord-i] == whoplace) {
			for (int j = 1; j<i; j++) {
				table[ycoord+j][xcoord-j] = whoplace;
			}
			break;
		}
		else if (table[ycoord+i][xcoord-i] == oppoplace) {
			
		}
		else if (table[ycoord+i][xcoord-i] == '_') {
			break;
		}
	}
	for (int i = 2; i<=C_min; i++) {
		if (table[ycoord+i][xcoord-i] == whoplace) {
			for (int j = 1; j<i; j++) {
				table[ycoord-j][xcoord+j] = whoplace;
			}
			break;
		}
		else if (table[ycoord-i][xcoord+i] == oppoplace) {
			
		}
		else if (table[ycoord-i][xcoord+i] == '_') {
			break;
		}
	}
	return ;
}
int main() {
	string word;
	for (int i = 0; i<8; i++) {
		cin>>word;
		table.push_back(word);
	}
	bool cont = true;
	int turn = 0;
	//even black odd white
	while (cont) {
		cin>>ycoord>>xcoord;
		if (xcoord == -1 && ycoord == -1) {
			cont = false;
		}
		else {
			if (turn%2==0) {
				table[ycoord][xcoord] = 'B';
			}
			else {
				table[ycoord][xcoord] = 'W';
			}
			check(turn%2);
		}
		turn++;
	}
	int Wsc = 0, Bsc = 0;
	for (int i = 0; i<8; i++) {
		for (int j = 0; j<8; j++) {
			cout<<table[i][j];
			if (table[i][j] == 'B') {
				Bsc++;
			}
			else if (table[i][j] == 'W') {
				Wsc++;
			}
		}
		cout<<"\n";
	}
	if (Wsc > Bsc) {
		cout<<"white wins";
	}
	else if (Bsc > Wsc) {
		cout<<"black wins";
	}
	else {
		cout<<"draw";
	}
	return 0;
}