Автор: | О. Ларькина | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
На день святого Валентина Дима решил сделать подарить своей девушке Лене открытку с сердечками. Лена учится в ДВФУ на программиста, поэтому Диме хотелось сделать программистскую открытку.
Дима придумал дизайн открытки, и хочет написать программу, которая выводила бы её изображение. Помогите ему.
Изображение открытки представляет собой прямоугольную таблицу, состоящую из символов "." (ASCII 46), "/" (ASCII 47), "V" (ASCII 86), "\" (ASCII 92), "^" (ASCII 94). На открытке изображено n сердец. Каждое сердце задаётся координатами центра x y и размером d. Координата x отсчитывается по горизонтали слева направо, а координата y — по вертикали сверху вниз.
Изображение сердца состоит из шести наклонных линий, состоящих из символов "/" и "\". Две линии, образующие нижний контур сердца, имеют длину по d символов, две линии, образующие внешнюю часть верхнего контура, имеют длину по ⌊(d + 1) / 2⌋ символов, а две линии, образующие внутреннюю часть верхнего контура, имеют длину по ⌊(d − 1) / 2⌋ символов.
Центр и нижняя точка сердца обозначены символами "V". Если d чётно, то две верхние точки сердца обозначены символами "^".
Изображение открытки должно иметь минимально возможный размер, охватывающий изображения всех заданных сердец. Все позиции, не занятые изображениями сердец, должны содержать символ ".".
Сердца рисуются в порядке перечисления во входном файле, последующие изображения перекрывают предыдущие.
Входной файла содержит натуральное число n — количество сердец, за которым следует n троек натуральных чисел xi yi di.
Выходной файл должен содержать изображение открытки.
1 ≤ n ≤ 102
1 ≤ xi, yi, di ≤ 50
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Данная задача является типичной задачей "на реализацию". Самое простое, из предложенных жюри решений, использует двумерный массив символов, в котором последовательно отмечает символы каждого нового сердца, описанного условии. Затем решение находит ограничивающий прямоугольник для полученного рисунка и выводит содержимое этого прямоугольника в файл.
Следует отметить, что размеры массива следует подобрать таким образом, чтобы помечаемые символы не выходили за его пределы. Из условия задачи ясно, что не имеют значения абсолютные координаты изображаемых символов — важно лишь, как они расположены друг относительно друга.
Наблюдения, упрощающие реализацию: