Семестровая олимпиада по программированию для 1-3 курса

   студентов кафедры Прикладной  математики,  а также всех желающих с
                     других факультетов и кафедр
Олимпиада будет проведена в два этапа:
   С 24 октября по 3 ноября необходимо правильно решить одну  или две
из нижеследующих квалификационных задач и или  положить листинг прог-
рамм(ы) в кармашек на кафедре Прикладной математики Демидову А.К. или
отправить исходные  тексты  программ(ы)  электронной почтой по адресу
andre@lion.tu-chel.ac.ru или показать решение 4 ноября перед соревно-
ваниями с 13-30 до 14-30 (в ауд. 323/3б)
   Ко  второму  очному этапу соревнований допускаются только те,  кто
правильно решил  хотя  бы  одну квалификационную задачу. Соревнования
состоятся во  вторник 4 ноября с 15-00 до  18-00 в дисплейных классах
кафедры Прикладной математики (ауд.332/3б и 327/3б).
   При подготовке к олимпиаде можно посмотреть набор задач соревнова-
ний ACM на сервере PRIMA в каталоге H:\LNGS\OLIMP.  Задачи на англий-
ском языке в HTML- формате, там же находится HTML-вьювер
                                #200       Странный порядок
   Один собиратель редких книг нашел книгу,  написанную на непонятном
языке,  но  буквы  в нем оказались те же, что и в английском языке. В
книге был  небольшой индекс, но слова  в нем оказались  расставлены в
порядке, отличающемся от порядка букв в  английском алфавите. Коллек-
ционер попытался определить  порядок  букв в алфавите этого странного
языка, но это ему не удалось.
   Напишите программу, которая  сможет  выполнить эту работу. Т.е. по
набору строк, отсортированному с помощью необычного алфавита, опреде-
лить последовательность букв в этом алфавите.
Вход
   В файле  INPUT.DAT  находится упорядоченный набор слов (прописными
буквами), по одному слову на строку. Длина слов не превышает 20 букв.
   Набор слов завершается строкой с единственным символом `#'. Не все
буквы от A до Z будут использованы, но набор слов позволяет однознач-
но восстановить порядок всех использованных букв.
Выход
   В файле OUTPUT.DAT должна быть одна строка, содержащая буквы (так-
же прописные), в том порядке, который  использовался для упорядочения
слов во входном файле.
Пример ввода
XWY
ZX
ZXY
ZXW
YWWX
#
Вывод для примера
XZYW
                              #312.        Кроссворды
   Поле для  кроссворда можно  хранить в виде матрицы 0  и 1. 0 пред-
ставляет  пустой  квадрат, а 1 черный. Некоторые квадраты  кроссворда
пронумерованы и нужны для ссылок на слова, которые  должны быть напи-
саны по вертикали или горизонтали. Квадрат нумеруется, если это белый
квадрат и либо (а) квадрат ниже является белым и нет  белого квадрата
выше, либо (б)  квадрат левее является  белым и нет  белого  квадрата
справа от этого. Квадраты нумеруются слева направо и сверху вниз.
   Черные и белые квадраты (нумерованные и  ненумерованные) можно на-
печатать следующим образом (где nnn номер квадрата):
              ++++++                        ++++++         ++++++
              ++++++                        +nnn +         +    +
              ++++++                        +    +         +    +
              ++++++                        ++++++         ++++++
   Необязательное требование:  если  черный квадрат находится на краю
его нужно убрать с рисунка (см.пример)
Вход
   Первая строка файла INPUT.DAT содержит  два  числа m<25 и n <  25.
Следующие m содержат n нулей и единиц, разделенных пробелом.
Выход
В выходном файле OUTPUT.DAT должна получиться диаграмма для кроссворда
Пример ввода
6 7
1 0 0 0 0 1 1
0 0 1 0 0 0 0
0 0 0 0 1 0 0
0 1 0 0 1 1 1
0 0 0 1 0 0 0
1 0 0 0 0 0 1
Вывод для примера                         или без необязательного требования
     +++++++++++++++++++++              ++++++++++++++++++++++++++++++++++++
     +001 +    +002 +003 +              ++++++001 +    +002 +003 +++++++++++
     +    +    +    +    +              ++++++    +    +    +    +++++++++++
++++++++++++++++++++++++++++++++++++	++++++++++++++++++++++++++++++++++++
+004 +    ++++++005 +    +006 +007 +	+004 +    ++++++005 +    +006 +007 +
+    +    ++++++    +    +    +    +	+    +    ++++++    +    +    +    +
++++++++++++++++++++++++++++++++++++	++++++++++++++++++++++++++++++++++++
+008 +    +009 +    +    +010 +    +	+008 +    +009 +    ++++++010 +    +
+    +    +    +    +    +    +    +	+    +    +    +    ++++++    +    +
+++++++++++++++++++++    +++++++++++	++++++++++++++++++++++++++++++++++++
+    ++++++011 +    +                   +    ++++++011 +    ++++++++++++++++
+    ++++++    +    +                   +    ++++++    +    ++++++++++++++++
++++++++++++++++++++++++++++++++++++	++++++++++++++++++++++++++++++++++++
+012 +013 +    ++++++014 +015 +    +	+012 +013 +    ++++++014 +015 +    +
+    +    +    ++++++    +    +    +    +    +    +    ++++++    +    +    +
++++++++++++++++++++++++++++++++++++    ++++++++++++++++++++++++++++++++++++
     +016 +    +    +    +    +         ++++++016 +    +    +    +    ++++++
     +    +    +    +    +    +         ++++++    +    +    +    +    ++++++
     ++++++++++++++++++++++++++         ++++++++++++++++++++++++++++++++++++