Submission

Status:

-P---P---P--P------P

Subtask/Task Score:

25/100

Score: 25

User: Poon

Problemset: Othello

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-10 22:34:06

#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};
      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;;j++)
        {
          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[2]=1;
        }
      }
      if(c[2]==1)
      {
        for(int i=x,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,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,j=y;;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,j=y;;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,j=y;;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,j=y;;i--,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;
        }
      }
      if(c[1]==1)
      {
        for(int i=x,j=y;;j--)
        {
          if(grid[i][j]=='B')
          {
            break;
          }
          grid[i][j]='B';
        }
      }
      turn=2;
    }
    else
    {
      int c[8]={0};
      
      
      
      
      
      
      
      
      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;;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,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,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,j=y;;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,j=y;;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,j=y;;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,j=y;;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;
    }
  }
  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;
}