Задача №115294. Морской бой
Рассмотрим классическую игру в «Морской бой».
Согласно правилам, у каждого игрока имеется поле размера \(10\times 10\) клеток, на котором он должен расставить \(10\) кораблей: один «четырехпалубник» (занимает \(1\times 4\) клетки), два «трехпалубника» (размера \(1\times 3\) клетки), три «двухпалубника» (размера \(1\times 2\) клетки) и четыре «однопалубника» (имеют размер \(1\times 1\)). При этом должны быть выполнены следующие условия:
- на поле должны быть выставлены все корабли;
- каждый корабль целиком помещается внутрь поля;
- множество клеток, занимаемых каждым кораблем, образует прямоугольник соответствующего размера;
- каждый корабль расположен либо вертикально, либо горизонтально;
- любые две клетки, разных кораблей, не могут совпадать, а также касаться друг друга по стороне или углу.
Будем описывать расположение кораблей с помощью таблицы \(10 \times 10\), где в каждом элементе находится символ ' # ', если соответствующая клетка занята кораблем, и ' . ' в противном случае. Ваша задача — по заданному полю \(10\times 10\) определить, соответствует ли оно корректной расстановке кораблей, согласующейся с правилами «Морского боя».
Ввод состоит из \(10\) строк, разделенных переводом строки, по \(10\) символов в каждой — описание поля. Гарантируется, что каждый символ поля равен либо ' # ', либо ' . '.
Выведите « YES », если описанное во входных данных поле соответствует корректной расстановке кораблей в игре «Морской бой», и « NO » иначе.
#.#.#..... .......##. .#..#..... .#........ .#..##.... .......... ####...#.. .......#.. .......#.. ##........
YES
##..#..... .......##. .#..#....# .#........ .#........ .......... ####...#.. .......#.. .......#.. ##.......#
NO