Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: anusitt
Problemset: Othello
Language: cpp
Time: 0.004 second
Submitted On: 2026-09-28 11:53:37
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
vector<string> t(8);
for (int i=0;i<8;i++) {
cin >> t[i];
}
int space=0;
for (int i=0;i<8;i++) {
for (int j=0;j<8;j++) {
if (t[i][j]=='_') space++;
}
}
int turn=1;
while(true) {
int r,c;
cin>>r>>c;
if (r==-1&&c==-1) {
break;
}
else {
if (turn%2!=0) {
t[r][c]='B';
}
else {
t[r][c]='W';
}
//right
if (c!=7 && t[r][c]!=t[r][c+1]) {
int j=1;
while (true) {
if (c+j==8) break;
else if (t[r][c+j]=='_') break;
else if (t[r][c]==t[r][c+j]) {
for (int k=1;k<j;k++) {
t[r][c+k]=t[r][c];
}
break;
}
j++;
}
}
//left
if (c!=0 && t[r][c]!=t[r][c-1]) {
int j=1;
while (true) {
if (c-j==-1) break;
else if (t[r][c-j]=='_') break;
else if (t[r][c]==t[r][c-j]) {
for (int k=1;k<j;k++) {
t[r][c-k]=t[r][c];
}
break;
}
j++;
}
}
//up
if (r!=0 && t[r][c]!=t[r-1][c]) {
int j=1;
while (true) {
if (r-j==-1) break;
else if (t[r-j][c]=='_') break;
else if (t[r][c]==t[r-j][c]) {
for (int k=1;k<j;k++) {
t[r-k][c]=t[r][c];
}
break;
}
j++;
}
}
//down
if (r!=7 && t[r][c]!=t[r+1][c]) {
int j=1;
while (true) {
if (r+j==8) break;
else if (t[r+j][c]=='_') break;
else if (t[r][c]==t[r+j][c]) {
for (int k=1;k<j;k++) {
t[r+k][c]=t[r][c];
}
break;
}
j++;
}
}
//up left
if (r!=0 && c!=0 && t[r][c]!=t[r-1][c-1]) {
int j=1;
while (true) {
if (r-j==-1 || c-j==-1) break;
else if (t[r-j][c-j]=='_') break;
else if (t[r][c]==t[r-j][c-j]) {
for (int k=1;k<j;k++) {
t[r-k][c-k]=t[r][c];
}
break;
}
j++;
}
}
//up right
if (r!=0 && c!=7 && t[r][c]!=t[r-1][c+1]) {
int j=1;
while (true) {
if (r-j==-1 || c+j==8) break;
else if (t[r-j][c+j]=='_') break;
else if (t[r][c]==t[r-j][c+j]) {
for (int k=1;k<j;k++) {
t[r-k][c+k]=t[r][c];
}
break;
}
j++;
}
}
//down right
if (r!=7 && c!=7 && t[r][c]!=t[r+1][c+1]) {
int j=1;
while (true) {
if (r+j==8 || c+j==8) break;
else if (t[r+j][c+j]=='_') break;
else if (t[r][c]==t[r+j][c+j]) {
for (int k=1;k<j;k++) {
t[r+k][c+k]=t[r][c];
}
break;
}
j++;
}
}
//down left
if (r!=7 && c!=0 && t[r][c]!=t[r+1][c-1]) {
int j=1;
while (true) {
if (r+j==8 || c-j==-1) break;
else if (t[r+j][c-j]=='_') break;
else if (t[r][c]==t[r+j][c-j]) {
for (int k=1;k<j;k++) {
t[r+k][c-k]=t[r][c];
}
break;
}
j++;
}
}
}
space--;
if (space ==0) break;
turn++;
}
int b=0,w=0;
for (int i=0;i<8;i++) {
for (int j=0;j<8;j++) {
if (t[i][j]=='W') w++;
else if (t[i][j]=='B') b++;
}
cout<<t[i]<<'\n';
}
if (b>w) cout << "black wins";
else if (w>b) cout << "white wins";
else cout << "draw";
return 0;
}
/*
BBW_BBBW
___WWW__
WBW_____
WW_WB_WB
W_WBW_WB
_BB_W_WB
_BBWW__W
_B_B_B__
3 5
2 7
1 7
7 7
4 5
0 3
-1 -1
*/