Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: CiCiiAlWh
Problemset: Othello
Language: cpp
Time: 0.003 second
Submitted On: 2025-09-28 14:37:41
#include <bits/stdc++.h>
using namespace std;
int dr[8] = {-1,-1,-1,0,0,1,1,1};
int dc[8] = {-1,0,1,-1,1,-1,0,1};
bool inside(int r,int c){return r>=0&&r<8&&c>=0&&c<8;}
int main(){
char board[8][8];
string s;
for(int i=0;i<8;i++){
cin >> s;
for(int j=0;j<8;j++){
board[i][j] = s[j];
}
}
int r,c,turn=0;
auto opp=[&](char ch){return ch=='B'?'W':'B';};
while(cin>>r>>c){
if(r==-1&&c==-1) break;
char cur=(turn%2==0?'B':'W');
char other=opp(cur);
board[r][c]=cur;
for(int d=0;d<8;d++){
int nr=r+dr[d],nc=c+dc[d];
vector<pair<int,int>> path;
while(inside(nr,nc)&&board[nr][nc]==other){
path.push_back({nr,nc});
nr+=dr[d];nc+=dc[d];
}
if(inside(nr,nc)&&board[nr][nc]==cur&&!path.empty()){
for(auto&p:path) board[p.first][p.second]=cur;
}
}
bool full=true;
for(int i=0;i<8&&full;i++)
for(int j=0;j<8;j++)
if(board[i][j]=='_') full=false;
if(full) break;
turn++;
}
for(int i=0;i<8;i++){
for(int j=0;j<8;j++) cout<<board[i][j];
cout<<"\n";
}
int b=0,w=0;
for(int i=0;i<8;i++)for(int j=0;j<8;j++){
if(board[i][j]=='B') b++;
else if(board[i][j]=='W') w++;
}
if(b>w) cout<<"black wins\n";
else if(w>b) cout<<"white wins\n";
else cout<<"draw\n";
}