Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: NealonX90
Problemset: Othello
Language: cpp
Time: 0.005 second
Submitted On: 2026-10-05 22:45:30
#include <bits/stdc++.h>
using namespace std;
vector<vector<char>> tbuse(8,vector<char>(8,'_'));
int bp = 0;
int wp = 0;
bool turn = false;
int c = 0;
void righthelper(int x , int y) {
for (int i = x + 1 ; i < 8 ; i ++) {
if (tbuse[y][i] == '_') break;
//cout << "Search Right " << i << " : " << '\n';
if (turn && tbuse[y][i] == 'W') {
//cout << "Found WL";
for (int idx = x + 1 ; idx < i ; idx++) {
tbuse[y][idx] = 'W';
}
break;
} else if (!turn && tbuse[y][i] == 'B') {
//cout << "Found BL";
for (int idx = x + 1 ; idx < i ; idx++) {
tbuse[y][idx] = 'B';
}
break;
}
}
}
void lefthelper(int x , int y) {
for (int i = x - 1 ; i >= 0 ; i--) {
if (tbuse[y][i] == '_') break;
//cout << "Search Left " << i << " : " << '\n';
if (turn && tbuse[y][i] == 'W') {
//cout << "Found WR";
for (int idx = x - 1 ; idx > i ; idx--) {
tbuse[y][idx] = 'W';
}
break;
} else if (!turn && tbuse[y][i] == 'B') {
//cout << "Found B";
for (int idx = x - 1 ; idx > i ; idx--) {
tbuse[y][idx] = 'B';
}
break;
}
//cout << i << '\n';
}
}
void uphelper(int x , int y) {
for (int i = y - 1 ; i >= 0 ; i--) {
if (tbuse[i][x] == '_') break;
//cout << "Search Left " << i << " : " << '\n';
if (turn && tbuse[i][x] == 'W') {
//cout << "Found WR";
for (int idx = y - 1 ; idx > i ; idx--) {
tbuse[idx][x] = 'W';
}
break;
} else if (!turn && tbuse[i][x] == 'B') {
for (int idx = y - 1 ; idx > i ; idx--) {
tbuse[idx][x] = 'B';
}
break;
}
//cout << i << '\n';
}
}
void downhelper(int x , int y) {
for (int i = y + 1 ; i < 8 ; i++) {
if (tbuse[i][x] == '_') break;
//cout << "Search Left " << i << " : " << '\n';
if (turn && tbuse[i][x] == 'W') {
//cout << "Found WR";
for (int idx = y + 1 ; idx < i ; idx++) {
tbuse[idx][x] = 'W';
}
break;
} else if (!turn && tbuse[i][x] == 'B') {
//cout << "Found B";
for (int idx = y + 1 ; idx < i ; idx++) {
tbuse[idx][x] = 'B';
}
break;
}
//cout << i << '\n';
}
}
void rdhelper(int x , int y) {
for (int i = 1 ; y + i < 8 && x + i < 8 ; i++) {
if (tbuse[y+i][x+i] == '_') break;
if (turn && tbuse[y+i][x+i] == 'W') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y+idx][x+idx] = 'W';
}
break;
} else if (!turn && tbuse[y+i][x+i] == 'B') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y+idx][x+idx] = 'B';
}
break;
}
}
}
void ldhelper(int x , int y) {
for (int i = 1 ; y + i < 8 && x - i >= 0 ; i++) {
if (tbuse[y+i][x-i] == '_') break;
if (turn && tbuse[y+i][x-i] == 'W') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y+idx][x-idx] = 'W';
}
break;
} else if (!turn && tbuse[y+i][x-i] == 'B') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y+idx][x-idx] = 'B';
}
break;
}
}
}
void ulhelper(int x , int y) {
for (int i = 1 ; y - i >= 0 && x + i < 8 ; i++) {
if (tbuse[y-i][x+i] == '_') break;
if (turn && tbuse[y-i][x+i] == 'W') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y-idx][x+idx] = 'W';
}
break;
} else if (!turn && tbuse[y-i][x+i] == 'B') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y-idx][x+idx] = 'B';
}
break;
}
}
}
void urhelper(int x , int y) {
for (int i = 1 ; y - i >= 0 && x - i >= 0 ; i++) {
if (tbuse[y-i][x-i] == '_') break;
if (turn && tbuse[y-i][x-i] == 'W') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y-idx][x-idx] = 'W';
}
break;
} else if (!turn && tbuse[y-i][x-i] == 'B') {
for (int idx = 1 ; idx < i ; idx++) {
tbuse[y-idx][x-idx] = 'B';
}
break;
}
}
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
for (int i = 0 ; i < 8 ; i++) {
string col;cin >> col;
for (int j = 0 ; j < 8 ; j++) {
if (col[j] != '_') c+=1;
tbuse[i][j] = col[j];
}
}
while (1) {
int x , y;cin >> y >> x;
if (x == -1 || y == -1) break;
//cout << "now " << x << ' ' << y << '\n';
tbuse[y][x] = turn ? 'W' : 'B';
lefthelper(x,y);
righthelper(x,y);
downhelper(x,y);
uphelper(x,y);
rdhelper(x,y);
ldhelper(x,y);
ulhelper(x,y);
urhelper(x,y);
turn = !turn;
c+=1;
if (c >= 64) break;
}
for (auto rows : tbuse) {
for (auto cols : rows) {
if (cols == 'B') bp += 1;
else if (cols == 'W') wp += 1;
cout << cols;
}
cout << '\n';
}
if (bp > wp) cout << "black wins";
else if (wp > bp) cout << "white wins";
else cout << "draw";
}
// _W_WBB__
// WWW__B__
// WW_WB_BB
// W_WBW_WB
// _BB_W_WB
// _BBWW__W
// _B_B_B__
// _W_BBB__
// WWWB_B__
// WW_BB_BB
// W_WBW_WB
// _BB_W_WB
// _BBWW__W
// _B_B_B__