Submission

Status:

P-xPxPxPPPPPxxxxxxxx

Subtask/Task Score:

40/100

Score: 40

User: wleo.lwo

Problemset: Othello

Language: cpp

Time: 0.002 second

Submitted On: 2026-08-10 21:43:41

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main(){
    vector<string> mp(8,string(8,' '));

    int color = 1;

    for(int i=0;i<8;i++){
        for(int j=0;j<8;j++){
            cin >> mp[i][j];
        }
    }
    
    int mont[2]={0};

    /*while(mont[0]!=-1 && mont[1]!=-1){
        cin >> mont[0] >> mont[1];
        if(mont[0]==-1 && mont[1]==-1) break;
        else {

        }
    }*/

    int x,y;
    int bl=0;

    int input=0;

    while(input==0){
        cin >> x >> y;
        int bl=0;
        if(x==-1 && y==-1) break;

        if(color==1){
            mp[x][y]='B';
            int z=1;
            //ซ้าย
            while(bl==0){
                if(y-z < 0) bl++;
                if(mp[x][y-z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x][y-z+1]='B';
                        z--;
                    }
                }
                if(mp[x][y-z]=='_') bl++;
                z++;
            }
            z=1;
            //ตะวันตกเฉียงเหนือ
            while(bl==1){
                if(x-z < 0 || y-z < 0) bl++;
                if(mp[x-z][y-z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y-z+1]='B';
                        z--;
                    }
                }
                if(mp[x-z][y-z]=='_') bl++;
                z++;
            }
            z=1;
            //บน
            while(bl==2){
                if(x-z < 0) bl++;
                if(mp[x-z][y]=='B'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y]='B';
                        z--;
                    }
                }
                if(mp[x-z][y]=='_') bl++;
                z++;
            }
            z=1;
            //อีสาน
            while(bl==3){
                if(x-z < 0 || y+z > 7) bl++;
                if(mp[x-z][y+z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y+z-1]='B';
                        z--;
                    }
                }
                if(mp[x-z][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ขวา
            while(bl==4){
                if(y+z > 7) bl++;
                if(mp[x][y+z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x][y+z-1]='B';
                        z--;
                    }
                }
                if(mp[x][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ออกตก
            while(bl==5){
                if(x+z > 7 || y+z > 7) bl++;
                if(mp[x+z][y+z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y+z-1]='B';
                        z--;
                    }
                }
                if(mp[x+z][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ตก
            while(bl==6){
                if(x+z > 7) bl++;
                if(mp[x+z][y]=='B'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y]='B';
                        z--;
                    }
                }
                if(mp[x+z][y]=='_') bl++;
                z++;
            }
            z=1;
            //ตกใต้
            while(bl==7){
                if(x+z > 7 || y-z < 0) bl++;
                if(mp[x+z][y-z]=='B'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y-z+1]='B';
                        z--;
                    }
                }
                if(mp[x+z][y-z]=='_') bl++;
                z++;
            }
            color*=-1;
            continue;
        }
        if(color==-1){
            mp[x][y]='W';
            int z=1;
            //ซ้าย
            while(bl==0){
                if(y-z < 0) bl++;
                if(mp[x][y-z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x][y-z+1]='W';
                        z--;
                    }
                }
                if(mp[x][y-z]=='_') bl++;
                z++;
            }
            z=1;
            //ตะวันตกเฉียงเหนือ
            while(bl==1){
                if(x-z < 0 || y-z < 0) bl++;
                if(mp[x-z][y-z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y-z+1]='W';
                        z--;
                    }
                }
                if(mp[x-z][y-z]=='_') bl++;
                z++;
            }
            z=1;
            //บน
            while(bl==2){
                if(x-z < 0) bl++;
                if(mp[x-z][y]=='W'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y]='W';
                        z--;
                    }
                }
                if(mp[x-z][y]=='_') bl++;
                z++;
            }
            z=1;
            //อีสาน
            while(bl==3){
                if(x-z < 0 || y+z > 7) bl++;
                if(mp[x-z][y+z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x-z+1][y+z-1]='W';
                        z--;
                    }
                }
                if(mp[x-z][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ขวา
            while(bl==4){
                if(y+z > 7) bl++;
                if(mp[x][y+z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x][y+z-1]='W';
                        z--;
                    }
                }
                if(mp[x][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ออกตก
            while(bl==5){
                if(x+z > 7 || y+z > 7) bl++;
                if(mp[x+z][y+z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y+z-1]='W';
                        z--;
                    }
                }
                if(mp[x+z][y+z]=='_') bl++;
                z++;
            }
            z=1;
            //ตก
            while(bl==6){
                if(x+z > 7) bl++;
                if(mp[x+z][y]=='W'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y]='W';
                        z--;
                    }
                }
                if(mp[x+z][y]=='_') bl++;
                z++;
            }
            z=1;
            //ตกใต้
            while(bl==7){
                if(x+z > 7 || y-z < 0) bl++;
                if(mp[x+z][y-z]=='W'){
                    bl++;
                    while(z>1){
                        mp[x+z-1][y-z+1]='W';
                        z--;
                    }
                }
                if(mp[x+z][y-z]=='_') bl++;
                z++;
            }
            color*=-1;
        }
    }


    /*
________
________
__BBB_B_
___WWW__
__BW_WB_
___WWW__
__B_B_B_
________
    */

    int BW[2]={0};


        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                if(mp[i][j]=='B') BW[0]++;
                if(mp[i][j]=='W') BW[1]++;
            }
        }



        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                cout << mp[i][j];
            }
            cout << '\n';
        }

        if(BW[0]>BW[1])cout<<"black wins";
        if(BW[0]<BW[1])cout<<"white wins";
        if(BW[0]==BW[1])cout<<"braw";




    return 0;
}