#include #include #include using namespace std; typedef struct { char t; int c; int n; } pole; int na_cislo(char a) { a=toupper(a); switch(a) { case 'K': return 1; case 'Q': return 2; case 'R': return 3; case 'B': return 4; case 'N': return 5; case 'P': return 6; default: return 0; } } char na_pismeno(int a) { switch(a) { case 1: return 'K'; case 2: return 'Q'; case 3: return 'R'; case 4: return 'B'; case 5: return 'N'; case 6: return '\0'; default: return '\0'; } } void prohod(pole &a, pole &b) { pole pom; pom.t=a.t; pom.c=a.c; pom.n=a.n; a.t=b.t; a.c=b.c; a.n=b.n; b.t=pom.t; b.c=pom.c; b.n=pom.n; } int main(void) { pole white[16],black[16]; int num_white=0; int num_black=0; string line; for(int i=7;i>=0;i--) { cin >> line; cin >> line; for(int j=2;j<=30;j+=4) { if((line[j]!='.') || (line[j]!=':')) { if((line[j]>='a') && (line[j]<='z')) { black[num_black].t=na_cislo(line[j]); black[num_black].c=(j-2)/4; black[num_black].n=i; num_black++; } else if ((line[j]>='A') && (line[j]<='Z')) { white[num_white].t=na_cislo(line[j]); white[num_white].c=(j-2)/4; white[num_white].n=i; num_white++; } } } } cin >> line; for(int i=0;iwhite[j+1].c) { prohod(white[j],white[j+1]); } } } for(int i=0;iwhite[j+1].n) { prohod(white[j],white[j+1]); } } } for(int i=0;iwhite[j+1].t) { prohod(white[j],white[j+1]); } } } cout << "White: "; for(int i=0;iblack[j+1].c) { prohod(black[j],black[j+1]); } } } for(int i=0;iblack[j+1].t) { prohod(black[j],black[j+1]); } } } cout << endl << "Black: "; for(int i=0;i