ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

1006. Квадратные рамки

Ограничение времени: 2.0 секунды
Ограничение памяти: 64 МБ
Рамка состоит из следующих символов:
Символ Код ASCII Описание
218 Левый верхний угол
191 Правый верхний угол
192 Левый нижний угол
217 Правый нижний угол
179 Вертикальная граница (левая и правая)
196 Горизонтальная граница (верхняя и нижняя)
N квадратных рамок (1 ≤ N ≤ 15) были последовательно нарисованы на экране шириной в 50 символов и высотой в 20 символов. Если части некоторых рамок пересекаются, видна только часть рамки, нарисованной позже. Каждая рамка целиком лежит на экране.
Вам нужно написать программу, которая найдёт последовательность рамок, которые, будучи нарисованы в таком порядке, создадут на экране ту же картину. Ваша последовательность не обязана быть той же самой, что и исходная, использованная для построения картины на экране. Однако, она не должна содержать более 2000 рамок.

Исходные данные

Problem illustration
Вся площадь экрана изначально была заполнена точками (ASCII 46). Ввод содержит картину на экране после того, как последовательность рамок была нарисована.

Результат

Ваша программа должна вывести количество рамок в найденной последовательности и координаты рамок следующим образом:
K
X1 Y1 A1

Xk Yk Ak
Здесь K — количество рамок, Xi и Yi — координаты левого верхнего угла рамки (0 ≤ Xi ≤ 49, 0 ≤ Yi ≤ 19), а Ai — длина стороны рамки (2 ≤ Ai). Числа должны разделяться пробелами и/или переводами строк.

Пример

исходные данныерезультат
(see the figure above)
6
16 11 7
32 14 4
4 8 8
11 6 7
36 11 3
28 8 3

Замечания

Выходные данные следует считывать, используя кодировку cp437 или совместимые с ней (например, cp866). Вы можете скачать пример входных данных здесь.
Источник задачи: Чемпионат УрГУ 1997