Задача A. Плоттер

Автор:И. Туфанов   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:8 Мб
Выходной файл:output.txt  

Условие

Плоттер — устройство для вывода на бумагу чертежей, имеет перо для рисования, которое может перемещаться над бумагой либо в поднятом, либо в опущенном состоянии. При перемещении в опущенном состоянии перо оставляет на бумаге след.

Программа для плоттера требует вывода последовательность отрезков в определённом порядке. Каждый отрезок задан координатами своих вершин M1(x1, y1) и M2(x2, y2). Процесс рисования заключается в следующем: плоттер чертит первый отрезок, потом по прямой передвигает перо к начальной или конечной точке второго отрезка и чертит его. Так продолжается до тех пор, пока все отрезки не будут нарисованы.

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

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

Входной файл содержит число N, за которым следует описание N отрезков в том порядке, в каком их и будет рисовать плоттер. Каждому из отрезков соответствует 4 числа x1 y1 x2 y2 — координаты точек M1 к M2 для соответсвующего отрезка. Все числа во входном файле целые.

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

Выходной файл должен содержать N чисел, разделенных пробелами, где i-е число равно 0, если i-й отрезок следует рисовать от M1 к M2, либо 1, если его следует рисовать от M2 к M1.

Ограничения

1 ≤ N ≤ 100000. Все координаты по модулю не превосходят 10000.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
2 
0 0 1 1 
3 0 2 1
0 1

Задача B. Кривосчетная машина

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

Условие

При изучении темы "системы счисления" студенты ДВГУ решили, что алгоритм перевода чисел слишком сложен. Поэтому они разработали новую счетную машину, которая предствавляет числа только в собственной системе счисления. Перевод чесел из этой системы в десятичную осуществляется по следующему прстому правилу: первый разряд числа умножить на 1 + второй умножить на 2 + ... + N-й разряд умножить на N. При этом в каждый разряд числа может принимать значения от 0 до K.

К сожалению, студенты были отчислены раньше, чем успели разработать программу для обратного перевода — из десятичной системы в систему счисления, понятную новой машине. Теперь эта задача досталась вам.

Разряды числа должны быть выведены в "обратном" порядке (первым - младший разряд, последним - старший). С целью экономии памяти, отводимой под число, если десятичное число можно представить разными способами, то должно быть выведено кратчайшее (содержащее меньше всего разрядов) представление.

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

Во входном файле содержится число M, которое нужно перевести, и число K.

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

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

Ограничения

0 ≤ M ≤ 2 × 109, 1 ≤ K ≤ 1 × 106

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

Входной файл (input.txt) Выходной файл (output.txt)
1
16 5
5 4 1
2
20 11
10 5

Задача C. Поворот блоков

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

Условие

На строительную площадку завезли несколько больших прямоугольных бетонных блоков разных размеров.

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

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

При этом после поворота блоки не должны накладываться друг на друга или выходить за границу стройплощадки (соприкосновение блоков разрешается).

Изображение строительной площадки представляет собой квадрат размером N x N клеток. Каждая клетка либо пуста ('.'), либо занята частью блока ('#'). Требуется по изображению стройплощадки до начала работы крана определить, как она будет выглядеть после поворота максимально возможного количества блоков.

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

В первой строке входного файла задано число N, далее следует N строк по N символов в каждой — описание стройплощадки.

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

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

Ограничения

1 ≤ N ≤ 50, до поворота блоки не соприкасаются.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
5
.....
.##..
.##..
.##..
.....
.....
.###.
.###.
.....
.....

Задача D. Палиндромика

Автор:Жюри летних сборов, И. Туфанов   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:4 Мб
Выходной файл:output.txt  

Условие

Палиндром — это строка, которая одинаково читается и в прямом, и в обраном порядке. Например, kazak — палиндром, а kazachka — нет. По данной строке S требуется найти такую кратчайшую (возможно, пустую) строку P, что строка S + P будет палиндромом.

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

Во входном файле содержится строка S, состоящая из маленьких латинских букв.

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

В выходной файл необходимо вывести строку P.

Ограничения

Длина исходной строки не превосходит 11000 символов.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
abcc
ba
2
abcd
cba

Задача E. Простое шифрование

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

Условие

Простейший алгоритм шифрования строк состоит в следующем: Даны две строки, состоящие из малых латинских букв — строка, которую нужно зашифровать (открытый текст) и секретный ключ шифрования. Сначала ключ шифрования записывается под открытым текстом, повторяясь столько раз, сколько нужно для покрытия всего текста.

Открытый текстwords
Секретный ключkeyke
Зашифрованный текстgspnw

Затем для каждый символа открытого текста остаётся неизменным, если соответствующий символ ключа — буква 'a', заменяется следующим по алфавиту, если это — буква 'b', сдвигается на две позиции по алфавиту по алфавиту, если это — буква 'с', и т.д. В случае, если в результат сдвига выходит за границу алфавита, отсчёт продолжается с буквы 'a'.

Требуется написать программу, реализующую простейший алгоритм шифрования.

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

Входной файл содержит 2 строки: открытый текст и ключ шифрования.

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

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

Ограничения

Длина каждой строки не превосходит 255 символов.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
aab
aac
aad
2
aab
b
bbc

Задача F. Максимальный перепад

Автор:И. Туфанов, И. Олейников   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:16 Мб
Выходной файл:output.txt  

Условие

Недавно в главном офисе картографической службы Ландшафтии случился пожар. Сгорел архив, хранящий таблицы с перепадами высот в различных регионах страны. Для восстановления этой информации требуется заново посчитать перепады высот по сохранившимся картам.

Карта региона представляет собой матрицу размером N x N клеток, в каждой клетке которой содержится средняя высота определённого района над уровнем моря. Максимальным перепадом высот называется максимальная величина, на которую отличаются средние высоты двух районов, соседних на карте по горизонтали или по вертикали. Требуется по карте региона определить максимальный перепад высот в нем.

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

Входной файл содержит число N, за которым следуют N2 целых чисел — описание карты региона.

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

Выходной файл должен содержать единственное целое число — максимальный перепад высот в этом регионе.

Ограничения

1 ≤ N ≤ 100. Все высоты — целые числа от 0 до 231−1

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

Входной файл (input.txt) Выходной файл (output.txt)
1
3
1 1 1
1 2 1
1 2 3
2

Задача G. Нормальная палиндромика

Автор:Жюри летних сборов, И. Туфанов   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:64 Мб
Выходной файл:output.txt  

Условие

Палиндром — это строка, которая одинаково читается и в прямом, и в обратном порядке. Например, kazak — палиндром, а kazachka — нет. По данной строке S требуется найти такую кратчайшую (возможно, пустую) строку P, что строка S + P будет палиндромом.

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

Во входном файле содержится строка S, состоящая из маленьких латинских букв.

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

В выходной файл необходимо вывести строку P.

Ограничения

Длина исходной строки не превосходит 300000 символов.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
abcc
ba
2
abcd
cba

0.425s 0.012s 25