Submission
Status:
PPPPPPPPPPPPPPP-P-PP
Subtask/Task Score:
90/100
Score: 90
User: dddrrrr
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-16 11:50:01
#include <bits/stdc++.h>
using namespace std;
int dx[8] = {0 , 0 ,1 ,-1 ,1 ,1 ,-1 ,-1} ,dy[8] = {1 ,-1 ,0 ,0 ,1 ,-1 ,1 ,-1};
void convert(int dir ,vector <vector <char>>& vec ,int i ,int j ,char c){
i+=dx[dir];
j+=dy[dir];
while(vec[i][j] != c && i < 8 && j < 8 && i >= 0 && j >= 0){
vec[i][j] = c;
i+=dx[dir];
j+=dy[dir];
}
return ;
}
void solve(int i ,int j ,vector <vector <char>>& vec ,char c){
//if(i == 8 || j == 8 || i < 0 || j < 0)return -1;
//if(x == vec[i][j])return ;
int sx = i ,sy = j;
for(int k=0 ;k<8 ;k++){
i = sx;
j = sy;
bool op = false;
while(true){
i += dx[k];
j += dy[k];
if(i == 8 || j == 8 || i < 0 || j < 0 || vec[i][j] == '_')break;
if(vec[i][j] == c){
if(op)convert(k ,vec ,sx ,sy ,c);
break ;
}
else{
op = true;
}
}
}
return ;
}
bool isvalid(vector <vector <char>>& vec){
for(auto row : vec){
for(auto col : row){
if(col == '_')return true;
}
}
return false;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
vector <vector <char>> vec(8 ,vector <char>(8));
for(auto& row : vec){
for(auto& col : row){
cin >> col;
}
}
bool b=true;
while(true){
int x ,y;
cin >> x >> y;
if(x==-1 && y==-1)break;
if(vec[x][y] != '_')break;
if(b){
vec[x][y] = 'B';
b=false;
}
else{
vec[x][y] = 'W';
b=true;
}
solve(x ,y ,vec ,vec[x][y]);
if(!isvalid(vec))break;
}
int black=0 ,white=0;
for(auto row : vec){
for(auto col : row){
cout << col;
if(col == 'B')black++;
else if(col == 'W')white++;
}
cout << "\n";
}
if(black > white)cout << "black wins";
else if(black < white)cout << "white wins";
else cout << "draw";
return 0;
}