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";
}