Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: TonnamSora
Problemset: Othello
Language: cpp
Time: 0.003 second
Submitted On: 2025-10-13 23:38:14
#include <iostream>
#include <algorithm>
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";
}
}
void right(int a, int b, char c){
int pos = -1;
for(int i = b + 1; i < 8; i++){
if(board[a][i] == '_'){
break;
}
if(board[a][i] == c){
pos = i;
break;
}
}
if(pos != -1){
for(int i = b; i < pos; i++){
board[a][i] = c;
}
}
}
void left(int a, int b, char c){
int pos = -1;
for(int i = b - 1; i >= 0; i--){
if(board[a][i] == '_'){
break;
}
if(board[a][i] == c){
pos = i;
break;
}
}
if(pos != -1){
for(int i = b; i >= pos; i--){
board[a][i] = c;
}
}
}
void down(int a, int b, char c){
int pos = -1;
for(int i = a + 1; i < 8; i++){
if(board[i][b] == '_'){
break;
}
if(board[i][b] == c){
pos = i;
break;
}
}
if(pos != -1){
for(int i = a; i < pos; i++){
board[i][b] = c;
}
}
}
void up(int a, int b, char c){
int pos = -1;
for(int i = a - 1; i >= 0; i--){
if(board[i][b] == '_'){
break;
}
if(board[i][b] == c){
pos = i;
break;
}
}
if(pos != -1){
for(int i = a; i >= pos; i--){
board[i][b] = c;
}
}
}
void upleft(int a, int b, char c) {
int posa = -1, posb = -1;
for(int i = 1; a - i >= 0 && b - i >= 0; i++) {
if(board[a - i][b - i] == '_'){
break;
}
if(board[a - i][b - i] == c) {
posa = a - i;
posb = b - i;
break;
}
}
if(posa != -1) {
for(int i = 0; a - i >= posa && b - i >= posb; i++) {
board[a - i][b - i] = c;
}
}
}
void upright(int a, int b, char c) {
int posa = -1, posb = -1;
for(int i = 1; a - i >= 0 && b + i < 8; i++) {
if(board[a - i][b + i] == '_'){
break;
}
if(board[a - i][b + i] == c) {
posa = a - i;
posb = b + i;
break;
}
}
if(posa != -1) {
for(int i = 0; a - i >= posa && b + i <= posb; i++) {
board[a - i][b + i] = c;
}
}
}
void downright(int a, int b, char c) {
int posa = -1, posb = -1;
for(int i = 1; a + i < 8 && b + i < 8; i++) {
if(board[a + i][b + i] == '_'){
break;
}
if(board[a + i][b + i] == c) {
posa = a + i;
posb = b + i;
break;
}
}
if(posa != -1) {
for(int i = 0; a + i <= posa && b + i <= posb; i++) {
board[a + i][b + i] = c;
}
}
}
void downleft(int a, int b, char c) {
int posa = -1, posb = -1;
for(int i = 1; a + i < 8 && b - i >= 0; i++) {
if(board[a + i][b - i] == '_'){
break;
}
if(board[a + i][b - i] == c) {
posa = a + i;
posb = b - i;
break;
}
}
if(posa != -1) {
for(int i = 0; a + i <= posa && b - i >= posb; i++) {
board[a + i][b - i] = c;
}
}
}
void place(int a, int b, char c){
board[a][b] = c;
right(a, b, c);
left(a, b, c);
down(a, b, c);
up(a, b, c);
upleft(a, b, c);
upright(a, b, c);
downright(a, b, c);
downleft(a, b, c);
}
int main(){
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
cin >> board[i][j];
}
}
int a, b;
char c;
int idx = 0;
while(1){
cin >> a >> b;
if(a < 0 || b < 0){
break;
}
if(idx % 2 == 0){
c = 'B';
}
else{
c = 'W';
}
place(a, b, c);
int cnt = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(board[i][j] == '_'){
cnt++;
}
}
}
if(cnt == 0){
break;
}
idx++;
}
//cin >> a >> b;
//downleft(a, b, c);
print();
int black = 0, white = 0;
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
if(board[i][j] == 'W'){
white++;
}
if(board[i][j] == 'B'){
black++;
}
}
}
if(white == black){
cout << "draw";
}
if(white > black){
cout << "white wins";
}
if(white < black){
cout << "black wins";
}
}