Задача E. Соединительная линия

Автор:А. Кленин   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:64 Мб
Выходной файл:output.txt  

Условие

На плоскости, разделённой на клетки, заданы два прямоугольника с координатами (x1, y1)−(u1, v1), (x2, y2)−(u2, v2) и две различные точки с координатами (xs, ys) и (xd, yd). Требуется:

  1. найти кратчайший путь между указанными точками, переходящий от клетки к клетке по вертикали или горизонтали и не пересекающий прямоугольники;
  2. вывести изображение прямоугольников и кратчайшего пути.

При этом пустая клетка должна изображаться символом '.', клетка, принадлежащая прямоугольнику — символом '#', начальная и конечная точки — символом '*', клетка, через которую путь проходит по горизонтали — символом '-', клетка, через которую путь проходит по вертикали — символом '|', клетка, в которой путь делает поворот — символом '+'.

Изображение должно быть прямоугольником минимального размера, достаточного, чтобы вместить все непустые клетки. Ось ординат должна быть направлена снизу вверх.

Формат входного файла

Во входном файле содержатся целые числа x1 y1 u1 v1 x2 y2 u2 v2 xs ys xd yd.

Формат выходного файла

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

Ограничения

1 ≤ xi, yi, ui, vi ≤ 100,

Прямоугольники могут пересекаться. Начальная и конечная точки не лежат внутри прямоугольников.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
2 3 7 5  6 7 8 8  6 2  5 9
...*...
...|###
...|###
...+--+
######|
######|
######|
....*-+
2
2 3 7 6  8 7 6 8  6 2  5 9
...*---+
....###|
....###|
######++
######|.
######|.
######|.
....*-+.

0.040s 0.007s 15