Плюсануть
Поделиться
Класснуть
Запинить


Олимпиадный тренинг

Вы можете самостоятельно решать эти задачи столько раз, сколько вам это понадобится.
   

Морской бой - 3

Очередь

Всем известна увлекательная игра «Морской бой». Сейчас играть в морской бой можно не только с соседом по парте, но и с компьютером. Игра c компьютером ведется на прямоугольном поле произвольных размеров N×M, где N - количество строк, M - количество столбцов. Приближается чемпионат Мира по морскому бою. Планируется вести его трансляцию в режиме реального времени: демонстрировать карту с кораблями и выводить статистику: количество целых, подбитых и уничтоженных кораблей, находящихся на поле. Требуется написать программу для подсчета статистики.
 
Корабль на поле — это связанная фигура, стоящая из одной или нескольких рядом лежащих клеток, имеющих общую сторону. Корабли могут быть абсолютно любых форм и размеров!
 
Входные данные
Первая строка содержит два целых числа N и M (1≤ N,M ≤ 103), разделённых пробелами - размеры игрового поля. Далее идут N строк по M символов - описание игрового поля.
 
Английская буква 'X' обозначает подбитую клетку корабля, 'S' - не подбитую клетка корабля, '-' – свободное водное пространство.
 
Выходные данные
В ответе выведите через пробел три числа:
 
количество целых кораблей
количество подбитых кораблей
количество уничтоженных кораблей

Ввод Вывод
3 8
---SSS--
XX--S-X-
X-S---S-
2 1 1

Источник: http://acmp.ru/index.asp?main=task&id_task=909
 

Городской парад

Очередь

Шеф Виггам должен обеспечить правильный порядок движения платформ на городском параде. Платформы могут прибывать в любом порядке, но должны выходить на центральную площадь строго в порядке возрастания номеров. Виггам может направить платформу либо сразу на площадь, либо сначала на боковую улицу, а затем с нее на площадь. Длина боковой улицы достаточна для размещения всех платформ, но ширина улиц не позволяет одной платформе обгонять другую.
Напишите программу, определяющую, сможет ли Виггам обеспечить правильный порядок движения платформ на параде.

Входные данные
Первая строка ввода содержит одно целое число N (1 ≤ N ≤ 100) – количество платформ. Вторая строка содержит N различных целых чисел от 1 до N – номера платформ в порядке прибытия.

Выходные данные
Вывести сообщение "YES", если можно обеспечить правильный порядок платформ, или сообщение "NO", если нельзя.

Ввод Вывод
4
1 3 4 2
YES
4
4 3 2 1
NO
4
2 1 3 4
YES