Submission

Status:

PPPPPP-PPPPP-P----PP

Subtask/Task Score:

70/100

Score: 70

User: EXTRA

Problemset: Othello

Language: cpp

Time: 0.003 second

Submitted On: 2025-11-11 08:11:10

#include <bits/stdc++.h>
using namespace std;
int jaldak=65,wsco=0,bs=0;
char arr[10][10];
bool same;
char ph,cn='B';
int x=0,y=0,c;

void down(){
  c=0;
  while(same){
    if(arr[x+2+c][y+1]!=cn&&arr[x+2+c][y+1]!='_'){
      c++;
    }else if(arr[x+2+c][y+1]==cn){
      for(int n=0;n<c;n++){
        arr[x+2+n][y+1]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void up(){
  c=0;
  while(same){
    if(arr[x-c][y+1]!=cn&&arr[x-c][y+1]!='_'){
      c++;
    }else if(arr[x-c][y+1]==cn){
      for(int n=0;n<c;n++){
      arr[x-n][y+1]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void left(){
  c=0;
  while(same){
    if(arr[x+1][y-c]!=cn&&arr[x+1][y-c]!='_'){
      c++;
    }else if(arr[x+1][y-c]==cn){
      for(int n=0;n<c;n++){
      arr[x+1][y-n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void right(){
  c=0;
  while(same){
    if(arr[x+1][y+2+c]!=cn&&arr[x+1][y+2+c]!='_'){
      c++;
    }else if(arr[x+1][y+2+c]==cn){
      for(int n=0;n<c;n++){
        arr[x+1][y+2+n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void NE(){
  c=0;
  while(same){
    if(arr[x-c][y+2+c]!=cn&&arr[x-c][y+2+c]!='_'){
      c++;
    }else if(arr[x-c][y+2+c]==cn){
      for(int n=0;n<c;n++){
      arr[x-n][y+2+n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void NW(){
  c=0;
  while(same){
    if(arr[x-c][y-c]!=cn&&arr[x-c][y-c]!='_'){
      c++;
    }else if(arr[x-c][y-c]==cn){
      for(int n=0;n<c;n++){
      arr[x-n][y-n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void SE(){
  c=0;
  while(same){
    if(arr[x+2+c][y+2+c]!=cn&&arr[x+2+c][y+2+c]!='_'){
      c++;
    }else if(arr[x+2+c][y+2+c]==cn){
      for(int n=0;n<c;n++){
        arr[x+2+n][y+2+n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

void SW(){
  c=0;
  while(same){
    if(arr[x+2+c][y-c]!=cn&&arr[x+2+c][y-c]!='_'){
      c++;
    }else if(arr[x+2+c][y-c]==cn){
      for(int n=0;n<c;n++){
        arr[x+2+n][y-n]=cn;
    }
      same=0;
    }else{
      same=0;
    }
  }
}

int main() {
  memset(arr,'_',sizeof(arr));
  for(int i=1;i<9;i++){
    for(int j=1;j<9;j++){
      cin>>ph;
      arr[i][j]=ph;
      if(arr[i][j]!='_'){
        jaldak--;
      }
    }
  }
  cin>>x>>y;
  jaldak--;
  while((x!=-1&&y!=-1)&&jaldak!=0){
    arr[x+1][y+1]=cn;
    same=1;
    while(same){
      down();
    }
    same=1;
    while(same){
      up();
    }
    same=1;
    while(same){
      left();
    }
    same=1;
    while (same){
      right();
    }
    same=1;
    while(same){
      NE();
    }
    same=1;
    while(same){
      NW();
    }
    same=1;
    while(same){
      SE();
    }
    same=1;
    while(same){
      SW();
    }
    if(cn=='B'){
      cn='W';
    }else{
      cn='B';
    }
    cin>>x>>y;
    jaldak--;
  }
  
  for(int i=1;i<9;i++){
    for(int j=1;j<9;j++){
      cout<<arr[i][j];
      if(arr[i][j]=='W'){
        wsco++;
      }else if(arr[i][j]=='B'){
        bs++;
      }
    }
    cout<<endl;
  }
  if(wsco>bs){
    cout<<"white wins";
  }else if(bs>wsco){
    cout<<"black wins";
  }else{
    cout<<"draw";
  }
}