Submission

Status:

PPPPPP-PPPPP-P----PP

Subtask/Task Score:

70/100

Score: 70

User: Poon

Problemset: Othello

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-11 09:48:12

#include <iostream>
using namespace std;

int main() 
{
  char grid[8][8];
  int on=0;
  for(int i=0;i<8;i++)
  {
    for(int j=0;j<8;j++)
    {
      cin>>grid[i][j];
      if(grid[i][j]=='B'||grid[i][j]=='W')
      {
        on++;
      }
    }
  }
  int turn=1;
  for(;on<=64;on++)
  {
    int x,y;
    cin>>x>>y;
    if(x==-1&&y==-1)
    {
      break;
    }
    if(turn==1)
    {
      int c[8]={0};
      grid[x][y]='B';
      for(int i=x,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;j++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[0]=1;
        }
      }
      if(c[0]==1)
      {
        for(int i=x,j=y+1;;j++)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      for(int i=x,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[1]=1;
          //cout<<c[1];
          break;
        }
      }
      if(c[1]==1)
      {
        for(int i=x,j=y-1;;j--)
        {
            //cout<<grid[i][j];
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
          //cout<<i<<" "<<j<<" ";
          //cout<<"abdsefg";
        }
      }
      for(int i=x+1,j=y;i<=7&&i>=0&&j<=7&&j>=0;i++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[2]=1;
        }
      }
      if(c[2]==1)
      {
        for(int i=x+1,j=y;;i++)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      
      for(int i=x-1,j=y;i<=7&&i>=0&&j<=7&&j>=0;i--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[3]=1;
        }
      }
      if(c[3]==1)
      {
        for(int i=x-1,j=y;;i--)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      
      for(int i=x+1,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;j++,i++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[4]=1;
        }
      }
      if(c[4]==1)
      {
        for(int i=x+1,j=y+1;;j++,i++)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      
      for(int i=x+1,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;i++,j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[5]=1;
        }
      }
      if(c[5]==1)
      {
        for(int i=x+1,j=y-1;;i++,j--)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      
      for(int i=x-1,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;i--,j++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[6]=1;
        }
      }
      if(c[6]==1)
      {
        for(int i=x-1,j=y+1;;i--,j++)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      
      for(int i=x-1,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;i--,j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='W')
        {
          continue;
        }
        if(grid[i][j]=='B')
        {
          c[7]=1;
        }
      }
      if(c[7]==1)
      {
        for(int i=x-1,j=y-1;;i--,j--)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      turn=2;
    }
    else
    {
      int c[8]={0};
      grid[x][y]='W';
      
      
      
      
      
      
      
      for(int i=x,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;j++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[0]=1;
        }
      }
      if(c[0]==1)
      {
        for(int i=x,j=y+1;;j++)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x+1,j=y;i<=7&&i>=0&&j<=7&&j>=0;i++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[2]=1;
        }
      }
      if(c[2]==1)
      {
        for(int i=x+1,j=y;;i++)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x-1,j=y;i<=7&&i>=0&&j<=7&&j>=0;i--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[3]=1;
        }
      }
      if(c[3]==1)
      {
        for(int i=x-1,j=y;;i--)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x+1,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;j++,i++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[4]=1;
        }
      }
      if(c[4]==1)
      {
        for(int i=x+1,j=y+1;;j++,i++)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x+1,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;i++,j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[5]=1;
        }
      }
      if(c[5]==1)
      {
        for(int i=x+1,j=y-1;;i++,j--)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x-1,j=y+1;i<=7&&i>=0&&j<=7&&j>=0;i--,j++)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[6]=1;
        }
      }
      if(c[6]==1)
      {
        for(int i=x-1,j=y+1;;i--,j++)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      
      for(int i=x-1,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;i--,j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[7]=1;
        }
      }
      if(c[7]==1)
      {
        for(int i=x-1,j=y-1;;i--,j--)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      for(int i=x,j=y-1;i<=7&&i>=0&&j<=7&&j>=0;j--)
      {
        if(grid[i][j]=='_')
        {
          break;
        }
        if(grid[i][j]=='B')
        {
          continue;
        }
        if(grid[i][j]=='W')
        {
          c[1]=1;
        }
      }
      if(c[1]==1)
      {
        for(int i=x,j=y;;j--)
        {
          if(grid[i][j]=='W')
          {
            break;
          }
          grid[i][j]='W';
        }
      }
      turn=1;
    }
    //for(int i=0;i<8;i++)
    //{
    //    for(int j=0;j<8;j++)
    //    {
    //        cout<<grid[i][j];
    //    }
    //    cout<<"\n";
    //}
    //cout<<"\n";
  }
  int a=0,b=0;
  for(int i=0;i<8;i++)
  {
    for(int j=0;j<8;j++)
    {
      if(grid[i][j]=='B')
      {
        a++;
      }
      if(grid[i][j]=='W')
      {
        b++;
      }
      cout<<grid[i][j];
    }
    cout<<"\n";
  }
  if(a>b)
  {
    cout<<"black wins";
  }
  else if(a<b)
  {
    cout<<"white wins";
  }
  else
  {
    cout<<"draw";
  }
  return 0;
}