Submission

Status:

PP-PPPPPPPPP-P----PP

Subtask/Task Score:

70/100

Score: 70

User: Jokul

Problemset: Othello

Language: c

Time: 0.002 second

Submitted On: 2025-10-13 18:20:12

#include<stdio.h>
char g[8][8];
void print()
{
    for(int i=0;i<8;i++)
      {
          for(int j=0;j<8;j++)
          {
              printf("%c",g[i][j]);
          }
          printf("\n");
      }
}
void right(int a,int b,char c)
{
    int pos=-1;
    for(int j=b+1;j<8;j++)
    {
        if(g[a][j]=='_')
        {
            break;
        }
        if(g[a][j]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j<pos;j++)
        {
            g[a][j]=c;
        }
    }
}
//////////////////////////////////////////////
void left(int a,int b,char c)
{
    int pos=-1;
    for(int j=b-1;j>=0;j--)
    {
        if(g[a][j]=='_')
        {
            break;
        }
        if(g[a][j]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j>pos;j--)
        {
            g[a][j]=c;
        }
    }
}
//////////////////////////////////////////////
void up(int a,int b,char c)
{
    int pos=-1;
    for(int j=a-1;j>=0;j--)
    {
        if(g[j][b]=='_')
        {
            break;
        }
        if(g[j][b]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=a;j>pos;j--)
        {
            g[j][b]=c;
        }
    }
}
void down(int a,int b,char c)
{
    int pos=-1;
    for(int j=a+1;j<8;j++)
    {
        if(g[j][b]=='_')
        {
            break;
        }
        if(g[j][b]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=a;j<pos;j++)
        {
            g[j][b]=c;
        }
    }
}
/////////////////////////////////////////////////////
void upright(int a,int b,char c)
{
    int pos=-1;
    for(int j=b+1;j<8;j++)
    {
        if(g[a-b+j][j]=='_')
        {
            break;
        }
        if(g[a-b+j][j]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j<pos;j++)
        {
            g[a-b+j][j]=c;
        }
    }
}
/////////////////////////////////////////////////////
void downright(int a,int b,char c)
{
    int pos=-1;
    for(int j=b+1;j<8;j++)
    {
        if(g[a-b+j][j]=='_')
        {
            break;
        }
        if(g[a-b+j][j]==c)
        {
            pos=j;
            break;
        }

    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j<pos;j++)
        {
            g[a+j-b][j]=c;
        }
    }
}
/////////////////////////////////////////////////
void upleft(int a,int b,char c)
{
    int pos=-1;
    for(int j=b-1;j>=0;j--)
    {
        if(g[a+j-b][j]=='_')
        {
            break;
        }
        if(g[a+j-b][j]==c)
        {
            pos=j;
            break;
        }
    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j>pos;j--)
        {
            g[a-b+j][j]=c;
        }
    }
}
/////////////////////////////////////////
void downleft(int a,int b,char c)
{
    int pos=-1;
    for(int j=b-1;j>=0;j--)
    {
        if(g[a-j+b][j]=='_')
        {
            break;
        }
        if(g[a-j+b][j]==c)
        {
            pos=j;
            break;
        }
    }
    if(pos==-1)
    {
        return 0;
    }
    else if(pos!=-1)
    {
        for(int j=b;j>pos;j--)
        {
            g[a-j+b][j]=c;
        }
    }
}
//////////////////////////////////////////////
void f(int a,int b,char c)
{
    g[a][b]=c;
    right(a,b,c);
    left(a,b,c);
    up(a,b,c);
    down(a,b,c);
    upright(a,b,c);
    downright(a,b,c);
    upleft(a,b,c);
}
int main()
{
    char b='B',w='W';
      for(int i=0;i<8;i++)
      {
              scanf("%s",g[i]);
      }
      int c,r,time=0,count[2]={0},num=0;
      for(int i=0;i<8;i++)
      {
            for(int j=0;j<8;j++)
          {
              if(g[i][j]=='_')
              {
                  num++;
              }
          }
      }
    while(r>=0&&c>=0&&num>0)
    {
        scanf("%d %d",&r,&c);
        if(time%2==0)
        {
        f(r,c,b);
        }
        else
        {
        f(r,c,w);
        }
        time++;
        num=num-2;
    }
    for(int i=0;i<8;i++)
        {
            for(int j=0;j<8;j++)
            {
                if(g[i][j]=='B')
                {
                    count[0]++;
                }
                else if(g[i][j]=='W')
                {
                    count[1]++;
                }
            }
        }
        print();
        //printf("\n");
        //printf("%d %d",count[0],count[1]);
        if(count[0]>count[1])
        {
            printf("black wins");
        }
        else if(count[0]==count[1])
        {
            printf("draw");
        }
        else
        {
            printf("white wins");
        }
}