Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: Prap
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2026-04-29 13:13:51
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector <string> table;
int xcoord, ycoord;
void check(int whoturn) {
char oppoplace = 'W';
char whoplace = 'B';
if (whoturn%2==1) {
whoplace = 'W';
oppoplace = 'B';
}
int C_max = ycoord;
int C_min = xcoord;
if (xcoord > ycoord) {
C_max = xcoord;
C_min = ycoord;
}
//up
if (ycoord != 0) {
for (int i = ycoord-2; i>=0 ; i--) {
if (table[i][xcoord] == whoplace && table[i+1][xcoord] == oppoplace && table[ycoord-1][xcoord] == oppoplace) {
for (int j = i+1; j<ycoord; j++) {
table[j][xcoord] = whoplace;
}
break;
}
else if (table[i][xcoord] == oppoplace) {
}
else if (table[i][xcoord] == '_') {
break;
}
}
}
//down
if (ycoord != 7) {
for (int i = ycoord+2; i<8; i++) {
if (table[i][xcoord] == whoplace && table[i-1][xcoord] == oppoplace && table[ycoord+1][xcoord] == oppoplace) {
for (int j = i-1; j>ycoord; j--) {
table[j][xcoord] = whoplace;
}
i = 9;
}
else if (table[i][xcoord] == oppoplace) {
}
else if (table[i][xcoord] == '_') {
i = 9;
}
}
}
//left
if (xcoord != 0) {
for (int i = xcoord-2; i>=0 ; i--) {
if (table[ycoord][i] == whoplace && table[ycoord][i+1] == oppoplace && table[ycoord][xcoord-1] == oppoplace) {
for (int j = i+1; j<xcoord; j++) {
table[ycoord][j] = whoplace;
}
i = -1;
}
else if (table[ycoord][i] == oppoplace) {
}
else if (table[ycoord][i] == '_') {
i = -1;
}
}
}
//right
if (xcoord != 7) {
for (int i = xcoord+2; i<8; i++) {
if (table[ycoord][i] == whoplace && table[ycoord][i-1] == oppoplace && table[ycoord][xcoord+1] == oppoplace) {
for (int j = i-1; j>xcoord; j--) {
table[ycoord][j] = whoplace;
}
i = 9;
}
else if (table[ycoord][i] == oppoplace) {
}
else if (table[ycoord][i] == '_') {
i = 9;
}
}
}
//right down
if (xcoord != 7 && ycoord != 7) {
for (int i = 2; i+C_max<8 ; i++) {
if (table[ycoord+i][xcoord+i] == whoplace && table[ycoord+i-1][xcoord+i-1] == oppoplace && table[ycoord+1][xcoord+1] == oppoplace) {
for (int j = i-1; j>0; j--) {
table[ycoord+j][xcoord+j] = whoplace;
}
break;
}
else if (table[ycoord+i][xcoord+i] == oppoplace) {
}
else if (table[ycoord+i][xcoord+i] == '_') {
break;
}
}
}
//left up
if (xcoord != 0 && ycoord != 0) {
for (int i = 2; i<=C_min ; i++) {
if (table[ycoord-i][xcoord-i] == whoplace && table[ycoord-i+1][xcoord-i+1] == oppoplace && table[ycoord-1][xcoord-1] == oppoplace) {
for (int j = 1; j<i; j++) {
table[ycoord-i+j][xcoord-i+j] = whoplace;
}
break;
}
else if (table[ycoord-i][xcoord-i] == oppoplace) {
}
else if (table[ycoord-i][xcoord-i] == '_') {
break;
}
}
}
//left down
if (xcoord != 0 && ycoord != 7)
for (int i = 2; ycoord + i <=7 && xcoord - i >=0; i++) {
if (table[ycoord+i][xcoord-i] == whoplace && table[ycoord+i-1][xcoord+i+1] == oppoplace && table[ycoord+1][xcoord-1] == oppoplace) {
for (int j = 1; j<i; j++) {
table[ycoord+j][xcoord-j] = whoplace;
}
break;
}
else if (table[ycoord+i][xcoord-i] == oppoplace) {
}
else if (table[ycoord+i][xcoord-i] == '_') {
break;
}
}
// right up
if (xcoord != 7 && ycoord != 0) {
for (int i = 2; xcoord + i <=7 && ycoord - i >=0; i++) {
if (table[ycoord-i][xcoord+i] == whoplace && table[ycoord-1][xcoord+1] == oppoplace && table[ycoord-1][xcoord+1] == oppoplace) {
for (int j = 1; j<i; j++) {
table[ycoord-j][xcoord+j] = whoplace;
}
break;
}
else if (table[ycoord-i][xcoord+i] == oppoplace) {
}
else if (table[ycoord-i][xcoord+i] == '_') {
break;
}
}
}
return ;
}
int main() {
string word;
for (int i = 0; i<8; i++) {
cin>>word;
table.push_back(word);
}
bool cont = true;
int turn = 0;
//even black odd white
while (cont) {
cin>>ycoord>>xcoord;
if (xcoord == -1 && ycoord == -1) {
cont = false;
}
else {
if (turn%2==0) {
table[ycoord][xcoord] = 'B';
}
else {
table[ycoord][xcoord] = 'W';
}
check(turn%2);
}
turn++;
int spacesc = 0;
for (int i = 0; i<8; i++) {
for (int j = 0; j<8; j++) {
if (table[i][j] == '_') {
spacesc++;
}
}
}
if (spacesc == 0) {
cont = false;
}
}
int Wsc = 0, Bsc = 0;
for (int i = 0; i<8; i++) {
for (int j = 0; j<8; j++) {
cout<<table[i][j];
if (table[i][j] == 'B') {
Bsc++;
}
else if (table[i][j] == 'W') {
Wsc++;
}
}
cout<<"\n";
}
if (Wsc > Bsc) {
cout<<"white wins";
}
else if (Bsc > Wsc) {
cout<<"black wins";
}
else {
cout<<"draw";
}
return 0;
}