0156. Без мата не обошлось

Input file name: mate.in
Output file name: mate.out
Time limit: 1 s
Memory limit: 32 megabytes

Дана стандартная шахматная доска размером 8*8 клеток. На ней своими координатами заданы фигуры: белые король и ферзь, и черный король. Координаты задаются следующим образом: каждой фигуре соответствует одна клетка, на которой она стоит. Ее координаты есть номер вертикали и горизонтали, на пересечении которых расположена данная клетка. Вертикали пронумерованы строчными латинскими буквами в алфавитном порядке: a, b, c, d, e, f, g и h. Горизонтали - цифрами от 1 до 8. Взять фигуру в шахматах означает сделать ход, после которого Ваша фигура становится на место фигуры противника, и та снимается с доски. Шах - позиция в шахматах, при которой одна из фигур нападает на неприятельского короля, то есть становится в такую позицию, из которой она может взять короля. Мат - позиция в шахматах, при которой неприятельскому королю дан шах, от которого он не может укрыться за один ход. Мат в шахматах означает победу той стороны, которая дала мат и поражение стороны, получившей мат. Ваша задача - рассчитать сколькими способами белые в данной позиции могут дать мат в один ход черному королю. Уточним разрешенные правилами ходы:

Король может ходить на одну клетку по вертикали, либо по горизонтали, либо по диагонали. Король не имеет права своим ходом становиться под шах вражеской фигуры.

Ферзь может ходить на любое количество клеток, но только в одном направлении: либо только по горизонтали, либо только по вертикали, либо только по диагонали.

Например, находясь в позиции а1, король может пойти либо на а2 - по вертикали, либо на b1 - по горизонтали, либо на b2 - по диагонали. Ферзь из позиции а1 может пойти на любое поле вертикали а (а2, а3, ... , а8), на любое поле горизонтали 1 (b1, c1, ... , h1), а также по горизонтали (b2, c3, d4, ... , h8). Ферзь не может "перепрыгивать" через своего короля, то есть, если король стоит на а5, а ферзь на а1, то ферзь может пойти на а4, но не может ни на а6, ни на а7, ни на а8, так как путь ему преграждает король. Ферзь не может пойти и на а5, так как брать свою фигуру также запрещено.

Формат входного файла

Во входном файле на первой строке находятся координаты белого короля, на второй строке - белоло ферзя, на третьей - черного короля. Все координаты состоят из двух символов, не разделенных пробелом. Первый обозначает вертикаль (a - h), второй - горизонталь (1 - 8).

Формат выходного файла

Выходной файл содержит одно число - количество способов дать мат черному королю в один ход, либо, если позиция на доске задана некорректно, число "-1" (без кавычек) . Некорректной позицией является такая позиция, когда черному королю уже дан шах. Уже поставленный мат или "пат" (позиция, когда черный король не может сделать ни одного разрешенного правилами хода, в то же время, ему не дан шах) также являются некорректными позициями.

Пример:

mate.inmate.out
f7 e4 h8 2
a2 a3 a1 -1
e3 f5 b6 0


Source: Petrozavodsk Summer 2003. Petrozavodsk SU Contest #2, Friday, August 29

Discuss       Submit a solution



Printable version