eolymp
bolt
Try our new interface for solving problems
Problems

Шахова проблема

Шахова проблема

На екзамені з алгоритмів Петрик витягнув нещасливу задачу, тому вельми просить вашої допомоги. Перед вами стандартна шахова дошка $8 \times 8$, клітинки якої пронумеровані зліва направо від $a$ до $h$ та знизу вгору від $1$ до $8$. Серед білих фігур дошці можуть бути всі види фігур, крім короля, а серед чорних навпаки --- є лише один король. Також відомо що фігури розставлені абсолютно довільно, тобто їх розміщення може не підпорядковуватись стандартним правилам шахів (білі навіть можуть мати забагато фігур певного типу). Вашою задачею є визначити, у якому положенні знаходиться чорний гравець: мат, пат чи звичайне положення. Довідка з шахів: \begin{itemize} \item\textbf{Шах} --- тактичний хід, при якому проходить напад на короля суперника. \item\textbf{Мат} --- ситуація, коли король опиняється під шахом, і у гравця нема жодного можливого ходу, після якого король перестав би перебувати під шахом. \item\textbf{Пат} --- становище, коли сторона, котра повинна ходити, не може це зробити, бо всі її фігури позбавлені можливості зробити хід, при цьому король не перебуває під шахом. \end{itemize} Правила ударів/ходів фігур в рамках задачі: \begin{itemize} \item\textbf{Королева} --- б'є по вертикалях, діагоналях та горизонталях, на яких вона перебуває, але вона не може перескакувати через інші фігури. \includegraphics[width=4cm]{https://static.eolymp.com/content/5s/5sm6anm40l3a1dg57mhm315hr4.png} \item\textbf{Тура} --- б'є по вертикалях та горизонталях, на яких вона перебуває, але не може перескакувати через інші фігури. \includegraphics[width=4cm]{https://static.eolymp.com/content/lu/lump2mj2et6tv68jesuoscdilo.png} \item\textbf{Слон} --- б'є по діагоналях, на яких він перебуває, але не може перескакувати через інші фігури. \includegraphics[width=4cm]{https://static.eolymp.com/content/n3/n3oggjbku52andar3r959f3un8.png} \item\textbf{Кінь} --- хід конем складається строго з двох пересувань: на одне поле по вертикалі чи горизонталі, потім віддаляючись від вихідного поля на одне поле по діагоналі. Це єдина фігура, яка може перескакувати через інші фігури. \includegraphics[width=4cm]{https://static.eolymp.com/content/1f/1fdetob6uh66d2f9i4ls61jspg.png} \item\textbf{Пішак} --- б'є по діагоналі на одну клітинку в сторону суперника (таким чином білі пішаки завжди б'ють тільки по діагоналі вгору). \includegraphics[width=4cm]{https://static.eolymp.com/content/t9/t9k62s5779569drb1bbqc3cjus.png} \item\textbf{Король} --- пересувається зі свого поля на одне з вільних суміжних полів (у тому числі й по діагоналі), що не перебуває під ударом фігур суперника. Може бити фігуру, яка знаходиться на суміжному полі, якщо вона не під ударом. \includegraphics[width=4cm]{https://static.eolymp.com/content/g7/g7iiiiqd2959na07u2vbg6n8sg.png} \end{itemize} \InputFile Вхідні дані містять $8$ рядків, кожен з яких складається з $8$ символів. Кожен символ задає відповідну клітинку шахової дошки: \begin{itemize} \item символ <<\t{.}>> позначає пусту клітинку \item символ <<\t{p}>> позначає пішака \item символ <<\t{r}>> позначає туру \item символ <<\t{n}>> позначає коня \item символ <<\t{b}>> позначає слона \item символ <<\t{Q}>> позначає королеву \item символ <<\t{K}>> позначає короля \end{itemize} Гарантується, що є рівно один король. \OutputFile У випадку мату у першому рядку виведіть <<\t{Checkmate}>>, а в наступних рядках виведіть клітинки всіх фігур, що завдають шах у довільному порядку. У випадку пату у першому рядку виведіть <<\t{Stalemate}>>. В іншому випадку виведіть <<\t{Continue}>> та у довільному порядку всі клітинки, у які король може зробити хід. \Note У першому прикладі король може атакувати пішака на $g7$ та перейти туди, бо ця клітинка не перебуває під атакою жодної білої фігури. \begin{center} \includegraphics[width=6cm]{https://static.eolymp.com/content/kh/khabq3g56p2ide56l9096o6u6k.png} \small{Ілюстрація до першого приклада.} \end{center} У другому прикладі король не знаходиться під шахом. У нього є три потенційно можливі ходи: $b8$, $b7$ та $a7$. Хід на $b8$ неможливий, бо це призведе до шаху від пішака на $a7$. Хід на $b7$ неможливий, бо це призведе до шаху від тури на $h7$. Хід на $a7$ неможливий, бо це призведе до шаху від тури на $h7$. Таким чином король не перебуває під шахом, але здійнити хід не може, що означає пат. \begin{center} \includegraphics[width=6cm]{https://static.eolymp.com/content/5h/5hr6ofbu414ap4f0854lnk2ebg.png} \small{Ілюстрація до другого приклада.} \end{center} У третьому прикладі король знаходиться під шахом, спричиненим пішаком на $c4$ та королевою на $e5$. Крім того будь-який хід короля залишить його під шахом, що створює мат. \begin{center} \includegraphics[width=6cm]{https://static.eolymp.com/content/rc/rcdab3mjlh29h9hqou48lmaqe0.png} \small{Ілюстрація до третього приклада.} \end{center}
Time limit 1 second
Memory limit 256 MiB
Input example #1
......K.
...r.pp.
......b.
pp..n.r.
....p...
.......p
...p.b.p
..Q..n..
Output example #1
Continue
g7
Input example #2
Kp......
p......r
........
.n......
........
........
p.pppppp
r.bQ.b..
Output example #2
Stalemate
Input example #3
r.......
.p...p.n
bbp.rp..
...KQr..
..p...r.
.p......
..p.pp..
...n....
Output example #3
Checkmate
c4
e5
Input example #4
........
......K.
.....ppp
........
........
........
........
..QQQQQQ
Output example #4
Continue
f8
g8
h8
Author Danylo Tymoshenko
Source UOI 2023. II stage