Submission
Status:
PPPPPPPPPPPPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: NealonX90
Problemset: Othello
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-05 22:56:40
#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 (c < 64) {
int x , y;
if (!(cin >> y >> x)) break;
if (x == -1 || y == -1) break;
if (x < 0 || x > 7 || y < 0 || y > 7) break;
if (tbuse[y][x] == '_') c+=1;
else continue;
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;
}
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";
cout << '\n';
}