Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: anusitt

Problemset: Othello

Language: cpp

Time: 0.002 second

Submitted On: 2026-09-28 13:59:40

#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) {
        if (space == 0) {
            break;
        }
        int r,c;
        cin>>r>>c;
        
        if (r==-1&&c==-1) {
            break;
        }
        if (t[r][c]=='_') {
            if (turn%2!=0) {
                t[r][c]='B';
            }
            else {
                t[r][c]='W';
            }
            
            space--;
            //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++;
                }
            }
            turn++;    
        }
        if (space ==0) break;
    }
    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;
}