Рамка состоит из следующих символов:
Символ |
Код ASCII |
Описание |
┌ |
218 |
Левый верхний угол |
┐ |
191 |
Правый верхний угол |
└ |
192 |
Левый нижний угол |
┘ |
217 |
Правый нижний угол |
│ |
179 |
Вертикальная граница (левая и правая) |
─ |
196 |
Горизонтальная граница (верхняя и нижняя) |
N квадратных рамок (1 ≤ N ≤ 15) были последовательно нарисованы на экране шириной в 50 символов и высотой в 20 символов. Если части некоторых рамок пересекаются, видна только часть рамки, нарисованной позже. Каждая рамка целиком лежит на экране.
Вам нужно написать программу, которая найдёт последовательность рамок, которые, будучи нарисованы в таком порядке, создадут на экране ту же картину. Ваша последовательность не обязана быть той же самой, что и исходная, использованная для построения картины на экране. Однако, она не должна содержать более 2000 рамок.
Исходные данные
Вся площадь экрана изначально была заполнена точками (ASCII 46). Ввод содержит картину на экране после того, как последовательность рамок была нарисована.
Результат
Ваша программа должна вывести количество рамок в найденной последовательности и координаты рамок следующим образом:
Здесь 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