Submission
Status:
PPxPxPxPPPPPxxxxxxxx
Subtask/Task Score:
45/100
Score: 45
User: wleo.lwo
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2026-08-23 17:28:17
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
vector<string> mp(8,string(8,' '));
int color = 1;
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
cin >> mp[i][j];
}
}
int x,y;
int bl=0;
int input=0;
while(input==0){
cin >> x >> y;
int bl=0;
if(x==-1 && y==-1) break;
if(color==1){
mp[x][y]='B';
int z=1;
//ซ้าย
while(bl==0){
if(y-z < 0) bl++;
if(mp[x][y-z]=='B'){
bl++;
while(z>1){
mp[x][y-z+1]='B';
z--;
}
}
if(mp[x][y-z]=='_') bl++;
z++;
}
z=1;
//ตะวันตกเฉียงเหนือ
while(bl==1){
if(x-z < 0 || y-z < 0) bl++;
if(mp[x-z][y-z]=='B'){
bl++;
while(z>1){
mp[x-z+1][y-z+1]='B';
z--;
}
}
if(mp[x-z][y-z]=='_') bl++;
z++;
}
z=1;
//บน
while(bl==2){
if(x-z < 0) bl++;
if(mp[x-z][y]=='B'){
bl++;
while(z>1){
mp[x-z+1][y]='B';
z--;
}
}
if(mp[x-z][y]=='_') bl++;
z++;
}
z=1;
//อีสาน
while(bl==3){
if(x-z < 0 || y+z > 7) bl++;
if(mp[x-z][y+z]=='B'){
bl++;
while(z>1){
mp[x-z+1][y+z-1]='B';
z--;
}
}
if(mp[x-z][y+z]=='_') bl++;
z++;
}
z=1;
//ขวา
while(bl==4){
if(y+z > 7) bl++;
if(mp[x][y+z]=='B'){
bl++;
while(z>1){
mp[x][y+z-1]='B';
z--;
}
}
if(mp[x][y+z]=='_') bl++;
z++;
}
z=1;
//ออกตก
while(bl==5){
if(x+z > 7 || y+z > 7) bl++;
if(mp[x+z][y+z]=='B'){
bl++;
while(z>1){
mp[x+z-1][y+z-1]='B';
z--;
}
}
if(mp[x+z][y+z]=='_') bl++;
z++;
}
z=1;
//ตก
while(bl==6){
if(x+z > 7) bl++;
if(mp[x+z][y]=='B'){
bl++;
while(z>1){
mp[x+z-1][y]='B';
z--;
}
}
if(mp[x+z][y]=='_') bl++;
z++;
}
z=1;
//ตกใต้
while(bl==7){
if(x+z > 7 || y-z < 0) bl++;
if(mp[x+z][y-z]=='B'){
bl++;
while(z>1){
mp[x+z-1][y-z+1]='B';
z--;
}
}
if(mp[x+z][y-z]=='_') bl++;
z++;
}
color*=-1;
continue;
}
if(color==-1){
mp[x][y]='W';
int z=1;
//ซ้าย
while(bl==0){
if(y-z < 0) bl++;
if(mp[x][y-z]=='W'){
bl++;
while(z>1){
mp[x][y-z+1]='W';
z--;
}
}
if(mp[x][y-z]=='_') bl++;
z++;
}
z=1;
//ตะวันตกเฉียงเหนือ
while(bl==1){
if(x-z < 0 || y-z < 0) bl++;
if(mp[x-z][y-z]=='W'){
bl++;
while(z>1){
mp[x-z+1][y-z+1]='W';
z--;
}
}
if(mp[x-z][y-z]=='_') bl++;
z++;
}
z=1;
//บน
while(bl==2){
if(x-z < 0) bl++;
if(mp[x-z][y]=='W'){
bl++;
while(z>1){
mp[x-z+1][y]='W';
z--;
}
}
if(mp[x-z][y]=='_') bl++;
z++;
}
z=1;
//อีสาน
while(bl==3){
if(x-z < 0 || y+z > 7) bl++;
if(mp[x-z][y+z]=='W'){
bl++;
while(z>1){
mp[x-z+1][y+z-1]='W';
z--;
}
}
if(mp[x-z][y+z]=='_') bl++;
z++;
}
z=1;
//ขวา
while(bl==4){
if(y+z > 7) bl++;
if(mp[x][y+z]=='W'){
bl++;
while(z>1){
mp[x][y+z-1]='W';
z--;
}
}
if(mp[x][y+z]=='_') bl++;
z++;
}
z=1;
//ออกตก
while(bl==5){
if(x+z > 7 || y+z > 7) bl++;
if(mp[x+z][y+z]=='W'){
bl++;
while(z>1){
mp[x+z-1][y+z-1]='W';
z--;
}
}
if(mp[x+z][y+z]=='_') bl++;
z++;
}
z=1;
//ตก
while(bl==6){
if(x+z > 7) bl++;
if(mp[x+z][y]=='W'){
bl++;
while(z>1){
mp[x+z-1][y]='W';
z--;
}
}
if(mp[x+z][y]=='_') bl++;
z++;
}
z=1;
//ตกใต้
while(bl==7){
if(x+z > 7 || y-z < 0) bl++;
if(mp[x+z][y-z]=='W'){
bl++;
while(z>1){
mp[x+z-1][y-z+1]='W';
z--;
}
}
if(mp[x+z][y-z]=='_') bl++;
z++;
}
color*=-1;
}
}
/*
________
________
__BBB_B_
___WWW__
__BW_WB_
___WWW__
__B_B_B_
________
*/
int BW[2]={0};
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(mp[i][j]=='B') BW[0]++;
if(mp[i][j]=='W') BW[1]++;
}
}
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
cout << mp[i][j];
}
cout << '\n';
}
if(BW[0]>BW[1])cout<<"black wins";
if(BW[0]<BW[1])cout<<"white wins";
if(BW[0]==BW[1])cout<<"draw";
return 0;
}