Submission
Status:
PPPPPP-PPPPP-P----PP
Subtask/Task Score:
70/100
Score: 70
User: iminyourwall
Problemset: Othello
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-12 15:38:27
#include <bits/stdc++.h>
using namespace std;
pair<int,int> ply;
char turn = 'B';
int placed = 0;
vector<string>mp;
vector<string>mpt;
char ch;
int mx[] = {1,1,1,0,0,-1,-1,-1};
int my[] = {-1,0,1,-1,1,-1,0,1};
void dbg(){
for (int i=1; i<=8; i++){
for (int j=1; j<=8; j++){
cout << mp[i][j];
}
cout << "\n";
}
//cout << "\n";
}
void check(int x, int y){
for (int i=0; i<8; i++){
if (mp[x+mx[i]][y+my[i]] == turn || mp[x+mx[i]][y+my[i]] == '_')continue;
/*else if (mp[x][y] == mp[x+2*mx[i]][y+2*my[i]]){
mp[x+mx[i]][y+my[i]] = turn;
check(x+(2*mx[i]), y+(2*my[i]));
}*/
mpt = mp;
int tx = 0, ty = 0, x2 = x+mx[i], y2 = y+my[i];
while (x+tx > 0 && x+tx < 9 && y+ty > 0 && y+ty < 9){
if (mp[x2+tx][y2+ty] == '_')break;
else if (mp[x2+tx][y2+ty] != turn)mpt[x2+tx][y2+ty] = turn;
else if (mp[x2+tx][y2+ty] == turn){
mp = mpt;
break;
}
tx += mx[i];
ty += my[i];
}
}
}
void play(int x, int y){
if (mp[x][y] == turn)return;
mp[x][y] = turn;
check(x,y);
//dbg();
}
int main(){
for (int i=0; i<10; i++){
mp.push_back("");
for (int j=0; j<10; j++){
mp[i]+='_';
}
}
//while (true){
placed = 0;
turn = 'B';
for (int i=1; i<=8; i++){
for (int j=1; j<=8; j++){
cin >> mp[i][j];
if (mp[i][j] != '_')placed++;
}
}
while (true){
cin >> ply.first >> ply.second;
if (ply.first<0 || ply.second <0 || ply.first > 7 || ply.second > 7)break;
play(ply.first+1, ply.second+1);
placed++;
if (placed >= 64)break;
if (turn == 'B')turn = 'W';
else if (turn == 'W')turn = 'B';
}
int cw=0, cb=0;
for (int i=1; i<=8; i++){
for (int j=1; j<=8; j++){
if (mp[i][j] == 'B')cb++;
else if (mp[i][j] == 'W')cw++;
}
}
dbg();
if (cb > cw)cout << "black wins ";
else if (cb < cw)cout << "white wins ";
else cout << "draw ";
//}
}