Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: lingusso
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2026-04-29 12:49:50
#include<iostream>
#include<string>
#include<vector>
using namespace std;
vector<string> v;
void fl(int y,int x,char c){
int b=-1;
for(int i=x+1;i>-2;i++){
if(i>7){
break;
}
if(v[y][i] == c){
b=i;
break;
}
else if(v[y][i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=x;i<=b;i++){
v[y][i]=c;
}
}
}
void fr(int y,int x,char c){
int b=-1;
for(int i=x-1;i>-2;i--){
if(i<0){
break;
}
if(v[y][i] == c){
b=i;
break;
}
else if(v[y][i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=x;i>=b;i--){
v[y][i]=c;
}
}
}
void fu(int y,int x,char c){
int b=-1;
for(int i=y-1;i>-2;i--){
if(i<0){
break;
}
if(v[i][x] == c){
b=i;
break;
}
else if(v[i][x] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=y;i>=b;i--){
v[i][x]=c;
}
}
}
void fd(int y,int x,char c){
int b=-1;
for(int i=y+1;i>-2;i++){
if(i>7){
break;
}
if(v[i][x] == c){
b=i;
break;
}
else if(v[i][x] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=y;i<=b;i++){
v[i][x]=c;
}
}
}
void fdl(int y,int x,char c){
int b=-1;
for(int i=x+1;i>-2;i++){
if(i>7 || y+i-x>7){
break;
}
if(v[y+i-x][i] == c){
b=i;
break;
}
else if(v[y+i-x][i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=x;i<=b;i++){
v[y+i-x][i]=c;
}
}
}
void fur(int y,int x,char c){
int b=-1;
for(int i=x-1;i>-2;i--){
if(i<0 || y+i-x<0){
break;
}
if(v[y+i-x][i] == c){
b=i;
break;
}
else if(v[y+i-x][i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=x;i>=b;i--){
v[y+i-x][i]=c;
}
}
}
void ful(int y,int x,char c){
int b=-1;
for(int i=1;i>-2;i++){
if(y-i<0 || x+i>7){
break;
}
if(v[y-i][x+i] == c){
b=i;
break;
}
else if(v[y-i][x+i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=1;i<=b;i++){
v[y-i][x+i]=c;
}
}
}
void fdr(int y,int x,char c){
int b=-1;
for(int i=1;i>-2;i++){
if(y+i>7 || x-i<0){
break;
}
if(v[y+i][x-i] == c){
b=i;
break;
}
else if(v[y+i][x-i] == '_'){
break;
}
}
if(b==-1){
return ;
}
else{
for(int i=1;i<=b;i++){
v[y+i][x-i]=c;
}
}
}
int main(){
int x,y,c=0,b=0,w=0;
string a;
for(int i=0;i<8;i++){
cin>>a;
v.push_back(a);
}
//place mark
while(true){
cin>>y>>x;
if(y==-1||x==-1){
for(int i=0;i<8;i++){
cout<<v[i]<<"\n";
}
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(v[i][j]=='W'){
w++;
}
if(v[i][j]=='B'){
b++;
}
}
}
if(w>b){
cout<<"white wins";
}
else if(b>w){
cout<<"black wins";
}
else{
cout<<"draw";
}
return 0;
}
if(c%2==0){
v[y][x] = 'B';
}
else{
v[y][x] = 'W';
}
c++;
fl(y,x,v[y][x]);
fr(y,x,v[y][x]);
fu(y,x,v[y][x]);
fd(y,x,v[y][x]);
fdl(y,x,v[y][x]);
fur(y,x,v[y][x]);
ful(y,x,v[y][x]);
fdr(y,x,v[y][x]);
}
}