#include<bits/stdc++.h>
using namespace std;
int main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
bool reynegro=false,reyblanco=false; // lo que hago aqui es declarar un booleano en falso
para si cualquier rey esta en jaque cambiarlo a true
char ar[8][8]; // declaro el tablero
int i,j,k,l; //como uso muchos for mejor declare las i,j,k,l
for(i=0; i<8; i++){ // introducen las piezas
for(j=0; j<8; j++)
cin>>ar[i][j];
}
/* este es la parte complicada, aqui lo que hago es un barrido de todo el tablero
si me encuentro con una torre, caballo, alfil,peon, o dama hago lo siguiente
(el rey y los puntos, es decir casillas vacias los ignoro)
otra cosa importante que decir es que como la dama es la
combinacion de torre y alfil puse en el if de cada uno "T" y "E" para reducir el codigo.
ademas una vez que veo que un rey esta en jaque hago un break
(para que seguir buscando algo que ya encontre ;-))
i=coordena x;
j=coordenada y;
si puedes notar pongo un if con las mayusculas (piezas blancas)
y si no son pues obiamente son minusculas que es lo que pongo en el else
(claro que el rey que se pone en jaque es el blanco y comparo en la R en vez de r) */
[code=cpp] for(i=0; i<8; i++){
for(j=0; j<8; j++){
if(ar[i][j]=='T' || ar[i][j]=='t' || ar[i][j]=='E' || ar[i][j]=='e'){ //tore y dama
if(ar[i][j]=='T' || ar[i][j]=='E'){ //si es mayuscula es pieza blanca sino negra
for(k=i-1; k>=0; k--)//arriba
if(ar[k][j] == 'r')reynegro=true;
else if(ar[k][j] != '.')break;
for(k=i+1; k<8; k++)//abajo
if(ar[k][j] == 'r')reynegro=true;
else if(ar[k][j] != '.')break;
for(k=j-1; k>=0; k--)//izquierda
if(ar[i][k] == 'r')reynegro=true;
else if(ar[i][k] != '.')break;
for(k=j+1; k<8; k++)//derecha
if(ar[i][k] == 'r')reynegro=true;
else if(ar[i][k] != '.')break;
}
else{
for(k=i-1; k>=0; k--)//arriba
if(ar[k][j] == 'R')reyblanco=true;
else if(ar[k][j] != '.')break;
for(k=i+1; k<8; k++)//abajo
if(ar[k][j] == 'R')reyblanco=true;
else if(ar[k][j] != '.')break;
for(k=j-1; k>=0; k--)//izquierda
if(ar[i][k] == 'R')reyblanco=true;
else if(ar[i][k] != '.')break;
for(k=j+1; k<8; k++)//derecha
if(ar[i][k] == 'R')reyblanco=true;
else if(ar[i][k] != '.')break;
}
}
if(ar[i][j]=='C' || ar[i][j]=='c'){ //caballo
if(ar[i][j]=='C'){ // si es mayuscula es pieza blanca sino negra
if(ar[i+1][j-2]=='r' || ar[i-1][j-2]=='r' || ar[i+2][j-1]=='r' || ar[i+2][j+1]=='r'
|| ar[i-2][j-1]=='r' || ar[i-2][j+1]=='r' || ar[i+1][j+2]=='r' || ar[i-1][j+2]=='r')
reynegro=true;
}
else{
if(ar[i+1][j-2]=='R' || ar[i-1][j-2]=='R' || ar[i+2][j-1]=='R' || ar[i+2][j+1]=='R'
|| ar[i-2][j-1]=='R' || ar[i-2][j+1]=='R' || ar[i+1][j+2]=='R' || ar[i-1][j+2]=='R')
reyblanco=true;
}
}
if(ar[i][j]=='A' || ar[i][j]=='a' || ar[i][j]=='E' || ar[i][j]=='e'){ //alfil y dama
if(ar[i][j]=='A' || ar[i][j]=='E'){ //si es mayuscula es pieza blanca sino negra
for(k=i-1,l=j-1; k>=0 && l>=0; k--,l--)//izquierda, arriba
if(ar[k][l] == 'r')reynegro=true;
else if(ar[k][l] != '.')break;
for(k=i+1,l=j-1; k<8 && l>=0; k++,l--)//izquierda abajo
if(ar[k][l] == 'r')reynegro=true;
else if(ar[k][l] != '.')break;
for(k=i-1,l=j+1; k>=0 && j<8; k--,l++)//derecha, arriba
if(ar[k][l] == 'r')reynegro=true;
else if(ar[k][l] != '.')break;
for(k=i+1,l=j+1; k<8 && l<8; k++,l++)//derecha, abajo
if(ar[k][l] == 'r')reynegro=true;
else if(ar[k][l] != '.')break;
}
else{
for(k=i-1,l=j-1; k>=0 && l>=0; k--,l--)//izquierda, arriba
if(ar[k][l] == 'R')reyblanco=true;
else if(ar[k][l] != '.')break;
for(k=i+1,l=j-1; k<8 && l>=0; k++,l--)//izquierda abajo
if(ar[k][l] == 'R')reyblanco=true;
else if(ar[k][l] != '.')break;
for(k=i-1,l=j+1; k>=0 && j<8; k--,l++)//derecha, arriba
if(ar[k][l] == 'R')reyblanco=true;
else if(ar[k][l] != '.')break;
for(k=i+1,l=j+1; k<8 && l<8; k++,l++)//derecha, abajo
if(ar[k][l] == 'R')reyblanco=true;
else if(ar[k][l] != '.')break;
}
}
if(ar[i][j]=='P' || ar[i][j]=='p'){ //peon
if(ar[i][j]=='P'){//si es mayuscula es pieza blanca sino negra
if(ar[i+1][j-1]=='r' || ar[i+1][j+1]=='r')reynegro=true;
}
else{
if(ar[i-1][j-1]=='R' || ar[i-1][j+1]=='R')reyblanco=true;
}
}
}
}
if(reyblanco)cout<<1; else cout<<0; // ya solo checo: si el reyblanco dio verdadero pongo que esta en jaque es decir un 1
cout<<"\n";
if(reynegro)cout<<1; else cout<<0;//hago lo mismo de arriba
return 0; }