Submission

Status:

PPPPPP-P-PPP-P----PP

Subtask/Task Score:

65/100

Score: 65

User: idiotkill

Problemset: Othello

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-27 17:05:14

// Online C++ compiler (editor)
// Write and run C++ online using this editor.  1=B 2= W

#include <bits/stdc++.h>
using namespace std;
int x[8][8]={0};
void checkotelloblack(int r,int c,int color){
    //sideways left
    for(int i=c-1;i>=0;i--){
        if (x[r][i]==color){
            for(int j=i;j<c;j++){
                x[r][j]=color;
            }
            break;
        }else if(x[r][i]==0){
            break;
        }
    }
    //sideways right
    for(int i=c+1;i<8;i++){
        if (x[r][i]==color){
            for(int j=i;j>c;j--){
                x[r][j]=color;
            }
            break;
        }else if(x[r][i]==0){
            break;
        }
    } 

    //up
    for(int i=r-1;i>=0;i--){
        if (x[i][c]==color){
            for(int j=i;j<r;j++){
                x[j][c]=color;
            }
            break;
        }else if(x[i][c]==0){
            break;
        }
    }
    //down
    for(int i=r+1;i<8;i++){
        if (x[i][c]==color){
            for(int j=i;j>r;j--){
                x[j][c]=color;
            }
            break;
        }else if(x[i][c]==0){
            break;
        }
    } 
    //up left
    for(int i=r-1,j=c-1; i>=0 && j>=0 ; i--,j--){
        if (x[i][j]==color){
            for(int i2=r-1,j2=c-1; i2>i && j2>j ; i--,j--){
                x[i2][j2]=color;
            }
            break;
        }else if(x[i][j]==0){
            break;
        }
    }
    //down right
    for(int i=r+1,j=c+1; i<8 && j<8 ; i++,j++){
         if (x[i][j]==color){
            for(int i2=r+1,j2=c+1; i2<i && j2<j ; i++,j++){
                x[i2][j2]=color;
            }
            break;
        }else if(x[i][j]==0){
            break;
        }       
    }
    //up right
    for(int i=r-1,j=c+1; i>=0 && j<8 ; i--,j++){
        if (x[i][j]==color){
            for(int i2=r-1,j2=c+1; i2>i && j2<j ; i--,j++){
                x[i2][j2]=color;
            }
            break;
        }else if(x[i][j]==0){
            break;
        }
    }
    //down left
    for(int i=r+1,j=c-1; i<8 && j>=0 ; i++,j--){
         if (x[i][j]==color){
            for(int i2=r+1,j2=c-1; i2<i && j2>j ; i++,j--){
                x[i2][j2]=color;
            }
            break;
        }else if(x[i][j]==0){
            break;
        }       
    }
}
int main() {
    int checkmaxboard=0;
    for(int i=0;i<8;i++){
        
        for(int j=0;j<8;j++){
            char temp;
            cin>>temp;
            if(temp=='B'){
                x[i][j]=1;
                checkmaxboard++;
            }else if(temp == 'W'){
                x[i][j]=2;
                checkmaxboard++;
            }
        }        
    }
    
    int a,b,turn=0;
    while(a!=-1 and b!=-1)
    {
        
        cin>>a>>b;
        if(a!=-1 and b!=-1){
            if(turn%2==0){
                x[a][b]=1;
                checkotelloblack(a,b,1);
                        checkmaxboard++;
            }else{
                x[a][b]=2;
                checkotelloblack(a,b,2);
            checkmaxboard++;
            }
        }
        turn++;
                if(checkmaxboard==64){
                            break;
                }
    }
    int countw=0,countb=0      ;  
    for(int i=0;i<8;i++){
        
        for(int j=0;j<8;j++){
            if(x[i][j]==0){
                   cout<<"_" ;   
            }else if(x[i][j]==1){
                      cout<<"B" ;   
                        countb++;
            }else{
                     cout<<"W" ;    
                        countw++;
            }
        }     

        cout<<endl;
    }


            
            if(countw>countb){
                        cout<<"white wins";
                        return 0;
            }else if(countw==countb){
                        cout<<"draw";
                        return 0;                        
            }
            else{
                         cout<<"black wins";
                        return 0;                       
            }

    
}