Задача A. Ближайшее число - 1

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

Условие

Дан массив A, состоящий из N неотрицательных целых чисел.

Назовём правым (левым) соседом нулевого элемента ближайший к нему справа (слева) ненулевой элемент.

Требуется построить массив B, который получается из массива A заменой каждого нулевого элемента на его ближайшего соседа в массиве A. Если оба соседа отсутствуют либо расстояния до них равны, замена не производится (элемент остаётся нулевым).

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

Входной файл содержит число N, за которым следует N целых чисел — элементы массива A.

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

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

Ограничения

1 ≤ N ≤ 10000, 0 ≤ Ai ≤ 10000

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

Входной файл (input.txt) Выходной файл (output.txt)
1
5
0 0 1 0 2
1 1 1 0 2
2
4
8 0 0 6
8 8 6 6

Задача B. ASCII в кубе

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

Условие

По данным целым числам W, H, D, W1, H1, D1 вывести ASCII-изображение параллелепипеда шириной W, высотой H и глубиной D, из которого удалён параллелепипед шириной W1, высотой H1 и глубиной D1. Удаление производится из угла, ближайшего к наблюдателю (ближний правый верхний угол). Параллелепипед состоит из кубиков размером 1x1x1. Каждый кубик выглядит так:

  +---+
 /   /|      
+---+ |      
|   | + 
|   |/ 
+---+
(используются символы '+', '-', '/', '|', соответственно ASCII 43, 45, 47, 124)

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

Входной файл содержит числа W H D W1 H1 D1

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

Выходной файл должен содержать ровно 3H + 2D + 1 строку, представляющую ASCII-изображение разности параллелепипедов. В начале первых 2D строк вместо пробелов должны стоять символы "точка" (ASCII 46).

Ограничения

1 ≤ W, H, D ≤ 40, 0 ≤ W1 < W, 0 ≤ H1 < H, 0 ≤ D1 < D.

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

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

 ......+---+---+---+
 ...../   /   /   /|
 ....+---+---+---+ |
 .../   /|   |   | +
 ..+---+ |   |   |/|
 ./   /| +---+---+ |
 +---+ |/   /   /| +
 |   | +---+---+ |/|
 |   |/   /   /| + |
 +---+---+---+ |/| +
 |   |   |   | + |/ 
 |   |   |   |/| +  
 +---+---+---+ |/ 
 |   |   |   | +  
 |   |   |   |/
 +---+---+---+
  

Задача C. Частичная дефрагментация

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

Условие

Оперативная память компьютера имеет объём V байт, пронумерованных от 0 до V − 1. Выделенные блоки памяти задаются последовательностью адресов (a1, b1), (a2, b2), … (aN, bN). Блоки отсортированы по адресам и не перекрываются, т. е. 0 ≤ aibi < ai + 1 < V.

Операционная система пытается выделить память под ещё один блок объёмом M байт. Если свободное пространство такого размера отсутствует, она может попытаться переместить какой-нибудь один из блоков, чтобы освободить непрерывный участок нужной длины.

Требуется выбрать для перемещения блок наименьшей длины. Если таких вариантов несколько, следует выбрать блок с наименьшим начальным адресом.

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

Во входном файле расположены целые числа V N M. Далее идут N пар чисел ai bi.

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

Выходной файл должен содержать единственное целое число:

Ограничения

0 ≤ N ≤ 100000, 1 ≤ V ≤ 1073741824

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

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

Задача D. Муравей и дерево

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

Условие

Муравей находится в лесу с плоской поверхностью почвы в точке с координатами (x1, y1), и направляется в точку (x2, y2). В лесу растёт дерево, основание ствола которого имеет форму круга с центром в точке (xT, yT) и радиусом RT. Дерево, возможно, помешает муравью дойти до цели по прямой. В таком случае ему придётся обойти дерево вокруг ствола.

Требуется определить длину кратчайшего пути для муравья.

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

Входной файл содержит вещественные числа x1 y1 x2 y2 xT yT RT.

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

Выходной файл должен содержать единственное вещественное число — длину кратчайшего пути. Абсолютная ошибка результата не должна превосходить 0.01 (т.е. следует выводить число с точностью не менее 3 знаков после запятой).

Ограничения

Все числа во входном файле находятся в диапазоне от 0 до 1000.

(x1xT)2 + (y1yT)2RT2, (x2xT)2 + (y2yT)2RT2

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

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

Задача E. OLE

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

Условие

Текстовый редактор OLE (One-Line Editor) работает с текстом, состоящим ровно из одной строки строчных латинских букв. Редактор поддерживает следующие команды, длиной в один символ каждая:

Команды, пытающиеся переместить курсор за пределы строки или удалить символ справа от последнего символа строки, игнорируются редактором.

Требуется по данному начальному состоянию строки, начальной позиции курсора и последовательности команд определить результат работы редактора.

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

Входной файл состоит из 3 строк. В первой строке содержится позиция курсора p, (0 — курсор перед первым символом, 1 — после первого перед вторым, и т.д.) во второй строке — начальное состояние строки редактора, в третьей — последовательность команд.

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

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

Ограничения

Длина исходной строки находится в диапазоне от 1 до 1000000 символов. Длина строки команд находится в диапазоне от 1 до 100000 символов.

0 ≤ p ≤ длина исходной строки.

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

Входной файл (input.txt) Выходной файл (output.txt)
1
1
abc
deLXX
adc
2
0
aa
bbLLx
xbbaa

Задача F. Забор в парке

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

Условие

В бесконечном квадратном парке деревья образуют квадратную решётку с шагом 1 метр. Часть парка было решено оградить забором, который представляет собой многоугольник с заданными координатами вершин. Деревья, которые в точности попадают на вершины или стороны многоугольника, придётся срубить. Необходимо выяснить количество таких деревьев.

Программа должна, получив на входе число вершин многоугольника N и их целочисленные координаты (x1, y1), …, (xN, yN), определить количество точек с целочисленными координатами, лежащих на границе этого многоугольника.

Стороны многоугольника не самопересекаются.

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

Входной файл содержит число N, за которым следует N пар координат x1 y1xN yN

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

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

Ограничения

3 ≤ N ≤ 1000, 0 ≤ xi, yi ≤ 107, исходные данные таковы, что результат не превосходит 231−1.

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

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

0.170s 0.006s 25