Submission
Status:
--------------------
Subtask/Task Score:
0/100
Score: 0
User: Jokul
Problemset: Othello
Language: c
Time: 0.001 second
Submitted On: 2025-10-13 18:07:07
#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};
while(r>=0&&c>=0)
{
scanf("%d %d",&r,&c);
if(time%2==0)
{
f(r,c,b);
}
else
{
f(r,c,w);
}
time++;
}
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");
}
}