Submission
Status:
P---P--------------P
Subtask/Task Score:
15/100
Score: 15
User: TonnamSora
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-13 22:37:24
#include <iostream>
using namespace std;
char board[8][8];
void print(){
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
cout << board[i][j];
}
cout << "\n";
}
}
int main(){
int idx = 0;
int idxr = 0, idxc = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
cin >> board[i][j];
}
}
int N = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(board[i][j] == '_'){
N++;
}
}
}
int r[64],c[64];
cin >> r[0] >> c[0];
while(r[idx] >= 0 && idx < N - 1){
idx++;
cin >> r[idx] >> c[idx];
}
idx = 0;
int cnt;
while(r[idx] >= 0){
//cin >> r[idx] >> c[idx];
if(idx % 2 == 0){
if(board[r[idx]][c[idx]] == '_'){
board[r[idx]][c[idx]] = 'B';
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx];
while(idxc + 1 < 8 && board[idxr][idxc] == 'W'){
if(board[idxr][idxc + 1] == 'B'){
cnt++;
}
idxc++;
}
idxc = c[idx] + 1;
if(cnt >= 1){
while(idxc < 8 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxc++;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx];
while(idxc - 1 >= 0 && board[idxr][idxc] == 'W'){
if(board[idxr][idxc - 1] == 'B'){
cnt++;
}
idxc++;
}
idxc = c[idx] - 1;
if(cnt >= 1){
while(idxc >= 0 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxc--;
}
}
cnt = 0;
idxc = c[idx];
idxr = r[idx] + 1;
while(idxr + 1 < 8 && board[idxr][idxc] == 'W'){
if(board[idxr + 1][idxc] == 'B'){
cnt++;
}
idxr++;
}
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr++;
}
}
cnt = 0;
idxc = c[idx];
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && board[idxr][idxc] == 'W'){
if(board[idxr - 1][idxc] == 'B'){
cnt++;
}
idxr--;
}
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr--;
}
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx] + 1;
while(idxr + 1 < 8 && idxc + 1 < 8 && board[idxr][idxc] == 'W'){
if(board[idxr + 1][idxc + 1] == 'B'){
cnt++;
}
idxc++;
idxr++;
}
idxc = c[idx] + 1;
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && idxc < 8 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr++;
idxc++;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx] + 1;
while(idxr + 1 < 8 && idxc - 1 >= 0 && board[idxr][idxc] == 'W'){
if(board[idxr + 1][idxc - 1] == 'B'){
cnt++;
}
idxc--;
idxr++;
}
idxc = c[idx] - 1;
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && idxc >= 0 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr++;
idxc--;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && idxc - 1 >= 0 && board[idxr][idxc] == 'W'){
if(board[idxr - 1][idxc - 1] == 'B'){
cnt++;
}
idxc--;
idxr--;
}
idxc = c[idx] - 1;
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && idxc >= 0 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr--;
idxc--;
}
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && idxc + 1 < 8 && board[idxr][idxc] == 'W'){
if(board[idxr - 1][idxc + 1] == 'B'){
cnt++;
}
idxc++;
idxr--;
}
idxc = c[idx] + 1;
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && idxc < 8 && board[idxr][idxc] == 'W'){
board[idxr][idxc] = 'B';
idxr--;
idxc++;
}
}
}//B
else{
if(board[r[idx]][c[idx]] == '_'){
board[r[idx]][c[idx]] = 'W';
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx];
while(idxc + 1 < 8 && board[idxr][idxc] == 'B'){
if(board[idxr][idxc + 1] == 'W'){
cnt++;
}
idxc++;
}
idxc = c[idx] + 1;
if(cnt >= 1){
while(idxc < 8 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxc++;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx];
while(idxc - 1 >= 0 && board[idxr][idxc] == 'B'){
if(board[idxr][idxc - 1] == 'W'){
cnt++;
}
idxc++;
}
idxc = c[idx] - 1;
if(cnt >= 1){
while(idxc >= 0 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxc--;
}
}
cnt = 0;
idxc = c[idx];
idxr = r[idx] + 1;
while(idxr + 1 < 8 && board[idxr][idxc] == 'B'){
if(board[idxr + 1][idxc] == 'W'){
cnt++;
}
idxr++;
}
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr++;
}
}
cnt = 0;
idxc = c[idx];
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && board[idxr][idxc] == 'B'){
if(board[idxr - 1][idxc] == 'W'){
cnt++;
}
idxr--;
}
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr--;
}
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx] + 1;
while(idxr + 1 < 8 && idxc + 1 < 8 && board[idxr][idxc] == 'B'){
if(board[idxr + 1][idxc + 1] == 'W'){
cnt++;
}
idxc++;
idxr++;
}
idxc = c[idx] + 1;
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && idxc < 8 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr++;
idxc++;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx] + 1;
while(idxr + 1 < 8 && idxc - 1 >= 0 && board[idxr][idxc] == 'B'){
if(board[idxr + 1][idxc - 1] == 'W'){
cnt++;
}
idxc--;
idxr++;
}
idxc = c[idx] - 1;
idxr = r[idx] + 1;
if(cnt >= 1){
while(idxr < 8 && idxc >= 0 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr++;
idxc--;
}
}
cnt = 0;
idxc = c[idx] - 1;
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && idxc - 1 >= 0 && board[idxr][idxc] == 'B'){
if(board[idxr - 1][idxc - 1] == 'W'){
cnt++;
}
idxc--;
idxr--;
}
idxc = c[idx] - 1;
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && idxc >= 0 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr--;
idxc--;
}
}
cnt = 0;
idxc = c[idx] + 1;
idxr = r[idx] - 1;
while(idxr - 1 >= 0 && idxc + 1 < 8 && board[idxr][idxc] == 'B'){
if(board[idxr - 1][idxc + 1] == 'W'){
cnt++;
}
idxc++;
idxr--;
}
idxc = c[idx] + 1;
idxr = r[idx] - 1;
if(cnt >= 1){
while(idxr >= 0 && idxc < 8 && board[idxr][idxc] == 'B'){
board[idxr][idxc] = 'W';
idxr--;
idxc++;
}
}
print();
cout << "\n";
}//W
int x = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(board[i][j] == '_'){
x++;
}
}
}
if(r[0] < 0){
x = 0;
}
if(x == 0){
int w = 0, b = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
cout << board[i][j];
if(board[i][j] == 'W'){
w++;
}
if(board[i][j] == 'B'){
b++;
}
}
cout << "\n";
}
if(w > b){
cout << "white wins";
}
if(w < b){
cout << "black wins";
}
if(w == b){
cout << "draw";
}
return 0;
}
idx++;
}
int w = 0, b = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
cout << board[i][j];
if(board[i][j] == 'W'){
w++;
}
if(board[i][j] == 'B'){
b++;
}
}
cout << "\n";
}
if(w > b){
cout << "white wins";
}
if(w < b){
cout << "black wins";
}
if(w == b){
cout << "draw";
}
}