#include #include using namespace std; void addattack(int, int, int[][8]); void addbishopattack(int, int, int[][8]); void addrookattack(int i, int j, int board[][8]); int main(){ string fen; while(cin>>fen){ int board[8][8] = {0}; int j=0, i=0, gap; for(int fenindex=0; fenindex=49){ gap=j+(int)fen[fenindex] % 48; for(;j0){ addattack(i, j, board); } } } int counter=0; for(int i=0;i<8;i++) for(int j=0;j<8;j++) if(board[i][j]==0) counter++; cout<=0 && board[i+1][j-1]==0) board[i+1][j-1]=1; if(i+1<8 && j+1<=7 && board[i+1][j+1]==0) board[i+1][j+1]=1; } else if(board[i][j]==80){//P if(i-1>=0 && j+1<=7 && board[i-1][j+1]==0) board[i-1][j+1]=1; if(i-1>=0 && j-1>=0 && board[i-1][j-1]==0) board[i-1][j-1]=1; } //KNIGHTS else if(board[i][j]==110 || board[i][j]==78) { if(i+2<=7 && j+1<=7 && board[i+2][j+1]==0) board[i+2][j+1]=1; if(i+2<=7 && j-1>=0 && board[i+2][j-1]==0) board[i+2][j-1]=1; if(i-2>=0 && j+1<=7 && board[i-2][j+1]==0) board[i-2][j+1]=1; if(i-2>=0 && j-1>=0 && board[i-2][j-1]==0) board[i-2][j-1]=1; if(j+2<=7 && i+1<=7 && board[i+1][j+2]==0) board[i+1][j+2]=1; if(j+2<=7 && i-1>=0 && board[i-1][j+2]==0) board[i-1][j+2]=1; if(j-2>=0 && i+1<=7 && board[i+1][j-2]==0) board[i+1][j-2]=1; if(j-2>=0 && i-1>=0 && board[i-1][j-2]==0) board[i-1][j-2]=1; } //KINGS else if(board[i][j]==75 || board[i][j]==107) { if(j+1<=7 && board[i][j+1]==0) board[i][j+1]=1; if(j-1>=0 && board[i][j-1]==0) board[i][j-1]=1; if(i+1<=7){ if(board[i+1][j]==0) board[i+1][j]=1; if(j+1<=7 && board[i+1][j+1]==0) board[i+1][j+1]=1; if(j-1>=0 && board[i+1][j-1]==0) board[i+1][j-1]=1; } if(i-1>=0){ if(board[i-1][j]==0) board[i-1][j]=1; if(j+1<=7 && board[i-1][j+1]==0) board[i-1][j+1]=1; if(j-1>=0 && board[i-1][j-1]==0) board[i-1][j-1]=1; } } //BISHOPS else if(board[i][j]==98 || board[i][j]==66){ addbishopattack(i, j, board); } //ROOKS else if(board[i][j]==114 || board[i][j]==82){ addrookattack(i, j, board); } //QUEEN else if(board[i][j]==81 || board[i][j]==113){ addrookattack(i, j, board); addbishopattack(i, j, board); } } void addbishopattack(int i, int j, int board[][8]){ bool conf=false; int trow=i, tcol=j; while(!conf){ tcol++;trow++; if(tcol>=8 || trow>=8 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i;tcol=j; while(!conf){ tcol++;trow--; if(tcol>=8 || trow<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i; tcol=j; while(!conf){ tcol--;trow--; if(tcol<0 || trow<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i; tcol=j; while(!conf){ tcol--;trow++; if(tcol<0 || trow>=8 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } } void addrookattack(int i, int j, int board[][8]){ bool conf=false; int trow=i, tcol=j; while(!conf){ trow++; if(trow>=8 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i; tcol=j; while (!conf){ trow--; if(trow<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i; tcol=j; while (!conf){ tcol++; if(tcol>=8 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } conf=false; trow=i;tcol=j; while (!conf){ tcol--; if(tcol<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } }