VIII открытый командный чемпионат КФУ по программированию 2015
A. Поликарп и цифры
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп решил залезть в лабиринт. Лабиринт представляет собой N комнат, соединенных N - 1 коридорами. В начальный момент он находится в комнате 1, из которой он может дойти до любой другой. Находясь в очередной комнате, Поликарп пытается перейти из неё в комнату, в которой он еще не был. Если таких комнат нет, Поликарп переходит в комнату, из которой он пришел, или выходит из лабиринта, если он находится в комнате 1 и посетил все остальные комнаты. В каждой комнате записано определенное число. Поликарп определил, что в комнате i записано число ai, повторенное bi раз. Например, если ai равно 123, а bi — 3, число будет выглядеть как 123123123. Каждый раз, посещая очередную комнату, Поликарп записывает себе это число указанное число раз в блокнот. При этом считается, что в начальный момент Поликарп посещает комнату 1. Таким образом, у него получается еще одно число c, составленное из всех выписанных чисел. Поликарпа интересует все подпоследовательности подряд идущих одинаковых цифр. Среди таких подпоследовательностей он выбирает те, у которых длина наибольшая, а среди них он выбирает ту, которая составлена из наименьшей цифры. Ему нужно определить, из какой минимальной цифры и максимальной длины можно составить такую подпоследовательность.

Входные данные

В первой строке находится целое число N — количество комнат. 1 ≤ N ≤ 100000. В следующих N строках находятся пары чисел, разделенных пробелами: ai и bi. 1 ≤ ai ≤ 100 000, 1 ≤ bi ≤ 1000. В следующих N - 1 строках находятся пары целых чисел fi и ti — описание коридоров. Коридор i связывает комнату fi c комнатой ti. Поликарп проверяет комнаты в порядке, указанном во входном файле.

Выходные данные

В первой строке выведите два числа — минимальная цифра, которая встречается в c наибольшее число раз подряд и сколько раз подряд она встречается.

Примеры
Входные данные
3
11211 1
11111 1
11111 1
1 2
1 3
Выходные данные
1 9
Входные данные
3
3 1
3 3
3 7
1 2
1 3
Выходные данные
3 13
B. Поликарп и полиномы
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть массив из N целых чисел a1, ..., aN. Над этим массивом Поликарп проводит опыты, а именно, применяет к нему некоторый набор операций. Всего операций M. Есть три типа операций. Первый тип задается строкой вида: 1 L R — это означает уменьшить числа в массиве на позициях L, ..., R на 1. Второй тип выглядит так: 2 L R — это означает увеличить числа в массиве на позициях L, ..., R на 1. Третий и последний тип выглядит как 3 L R a0 a1 a2 a3 a4. Он означает: вычислите , где f(xi) = a0·xi4 + a1·xi3 + a2·xi2 + a3·xi1 + a4 и xi — число в массиве на позиции i. Вам необходимо последовательно выполнить заданный набор операций.

Гарантируется, что в любой момент времени числа в массиве не превышают по модулю 200. Все значения сумм не превышают по модулю 1018.

Входные данные

В первой строке находится целое число N — количество чисел в массиве. 1 ≤ N ≤ 105.

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

В третьей строке находится целое число M — количество операций. 1 ≤ M ≤ 105.

В следующих M строках находятся описания операций. Формат для них указан выше. 1 ≤ L ≤ R ≤ N,  - 100 ≤ a0, a1, a2, a3, a4 ≤ 100.

Выходные данные

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

Примеры
Входные данные
5
1 2 3 4 5
7
3 1 5 0 0 0 0 1
3 1 5 0 0 0 1 0
3 1 5 0 0 1 0 0
3 1 5 0 1 0 0 0
3 1 5 1 0 0 0 0
1 1 5
3 1 5 1 0 0 0 0
Выходные данные
5
15
55
225
979
354
Входные данные
5
1 2 3 4 5
5
1 1 5
1 1 5
1 1 5
3 1 5 0 1 0 1 0
3 1 5 1 0 1 0 5
Выходные данные
0
69
C. Поликарп и многоугольник
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть набор из N отрезков с длинами ai. Он пытается найти такой минимальный радиус окружности, при котором из заданных отрезков можно составить выпуклый многоугольник, такой, что все его вершины лежат на окружности, а центр окружности лежит внутри многоугольника. Вам необходимо помочь ему подобрать такой радиус, если это возможно.

Входные данные

В первой строке находится единственное целое число N (3 ≤ N ≤ 100) — количество отрезков.

Во второй строке находится N целых чисел ai (1 ≤ ai ≤ 100) — длины отрезков

Выходные данные

Если возможно подобрать радиус окружности, соответствующий вышеописанным требованиям, выведите его. Если нет — выведите -1. Результат считается правильным, если относительная или абсолютная погрешность не превосходит 10 - 6.

Примеры
Входные данные
3
100 100 100
Выходные данные
57.73502737
Входные данные
3
100 51 51
Выходные данные
-1
Входные данные
3
100 100 51
Выходные данные
51.70946020
D. Поликарп и таблица
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп решил помочь с организацией олимпиады и сделать для каждой команды логины. У него есть таблица из N + 1 строк и M столбцов в формате csv. Это означает, что таблица представляет собой текст из N + 1 строк. Каждая строка i имеет вид "ai, 1;ai, 2;... ;ai, m" (без кавычек), где ai, j — содержимое ячейки на пересечении строки i и столбца j. Содержимое каждой ячейки представляет собой строку длиной от 1 до 30 символов. Ячейка может содержать только строчные и прописные латинские символы и цифры. В первой строке находятся названия столбцов. Среди них обязательно есть "Team", "City", "Email", "Organization", "Participant1", "Participant2" и "Participant3" — название команды, город, адрес электронной почты, название организации и ФИО участников соответственно. Столбцы могут идти в любом порядке.

Поликарпу необходимо сделать еще одну таблицу в таком же формате с полями "Team", "Login", "Email", "Participants" — название команды, логин, электронная почта и участники соответственно. Логин выглядит как "team<XXX> (<Organization>, <City>)", где <XXX> - трехзначный номер команды в исходной таблице, Organization и City — названия организации и города соответственно. Участники заполняются так : "<Participant1>,<Participant2>,<Participant3>" — ФИО участников через запятую.

Входные данные

Таблица в виде текста из N + 1 строки и M столбцов. 1 ≤ N ≤ 100, 1 ≤ M ≤ 15. Формат данных указан в условии.

Выходные данные

Таблица из N + 1 строки в формате, указанном в условии.

Примеры
Входные данные
Country;Organization;City;Team;Email;
Participant1;Participant2;
Participant3$
Russia;KFU;Kazan;KFU01;team01;P1;P2;
P3$
Russia;KFU;Kazan;KFU02;team02;P4;P5;
P6$
Russia;KFU;Kazan;KFU03;team03;P7;P8;
P9$
Russia;ITMO;SaintPetersburg;ITMO00;
somefakemail;I1;I2;I3$
Выходные данные
Team;Login;Email;Participants$
KFU01;team001 (KFU, Kazan);team01;
P1,P2,P3$
KFU02;team002 (KFU, Kazan);team02;
P4,P5,P6$
KFU03;team003 (KFU, Kazan);team03;
P7,P8,P9$
ITMO00;team004 (ITMO, SaintPetersburg);
somefakemail;I1,I2,I3$
Примечание

Переносы строки в примере отмечены как $, поскольку текст не помещается на странице.

E. Поликарп и многодугольник
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть плоскость с N кругами на ней и бесконечно длинная нитка. Каждый круг i задается координатами центра xi и yi и радиусом ri. Поликарп использует нитку, чтобы обтянуть все эти круги так, чтобы все круги были внутри фигуры, образованной ниткой. При этом нитку разрезать нельзя.

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

Входные данные

В первой строке находится единственное целое число N, 2 ≤ N ≤ 100.

В следующих N строках находятся тройки целых чисел xi, yi, ri. Числа разделены пробелами,  - 1000 ≤ xi, yi ≤ 1000, 1 ≤ ri ≤ 100. Гарантируется, что круги не пересекаются и не касаются друг друга.

Выходные данные

В единственной строке надо вывести два числа — длину нитки и площадь фигуры. Ответ необходимо выводить с точностью до 10 - 6.

Примеры
Входные данные
2
0 0 1
99 99 100
Выходные данные
670.80969437 33561.73030009
Входные данные
2
10 0 4
-10 0 4
Выходные данные
65.13274123 210.26548246
Входные данные
5
0 100 10
-100 -20 10
100 -20 10
-50 40 10
50 40 10
Выходные данные
575.24184011 17438.25913572
F. Поликарп и спутники
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа появилось новое увлечение — спутникостроение. Подглядел он идею у компании Provectus. Ну, так вот, он узнал, что вместо одного дорогостоящего многотонного спутника, который еще надо выводить на орбиту ракетой, достаточно отправить N маленьких спутников массой несколько килограмм каждый, которые выводятся на орбиту с помощью специальных самолетов, а это в разы дешевле. Но тут у него возникла задача передачи данных между спутниками. Между любыми двумя различными спутниками можно настроить один двухсторонний канал связи. Но так как это требует установки на спутник дополнительного оборудования, то суммарное число всех каналов связи не более 4·N.

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

Входные данные

В единственной строке дана пара чисел N и K, где 3 ≤ N ≤ 20, 1 ≤ K ≤ 5. Гарантируется, что решение всегда существует.

Выходные данные

В первой строке число M — количество каналов связи.

В следующих M строках описание каждого из каналов: пары чисел, разделенные пробелами — номера двух спутников, между которыми нужно устанавить связь, M ≤ 4·N.

Примеры
Входные данные
5 2
Выходные данные
8
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
Входные данные
6 2
Выходные данные
9
1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6
G. Поликарп и палиндромы
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть строка S, стоящая из N строчных латинских символов. Поликарпа интересует, являются ли определенные подстроки строки S палиндромами. Палиндромом называется строка, которая одинаково читается справа налево и слева направо. Но этого Поликарпу мало: он еще может менять символы в строке. Поликарпу интересно, можно ли быстро определять, является ли палиндромом заданная подстрока строки S, если в S можно заменять символы. Всего Поликарп последовательно проводит K операций.

Входные данные

В первой строке находится строка S. Её длина N, 1 ≤ N ≤ 100000. S состоит только из строчных латинских символов.

Во второй строке находится единственное целое число K, 1 ≤ K ≤ 100000 — количество операций.

В следующих K строках находятся описания операций, по одной в каждой строке. Каждая строка начинается с целого числа ti, которое может принимать значения 1 и 2. Если ti равно 1, то это дальше идут два целых числа li и ri, 1 ≤ li ≤ ri ≤ N. Это означает - необходимо определить, является ли подстрока slisli + 1... sri палиндромом. Если ti равно 2, то дальше идет целое число pi и строчный латинский символ ci. Это означает — заменить в строке S символ на позиции pi на ci

Выходные данные

Для каждой операции определения палиндрома необходимо вывести на отдельных строках "YES", если подстрока является палиндромом, или "NO", если не является. Кавычки выводить не нужно.

Примеры
Входные данные
ababaccc
8
1 1 5
1 1 8
1 2 4
2 5 b
2 6 a
2 7 b
2 8 a
1 1 8
Выходные данные
YES
NO
YES
YES
Входные данные
aaaa
10
1 1 1
1 1 2
1 1 3
1 1 4
1 2 2
1 2 3
1 2 4
1 3 3
1 3 4
1 4 4
Выходные данные
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
H. Поликарп и цепочки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть набор из N слотов, в каждом слоте расположено по одному украшению. У каждого украшения есть уникальный номер — целое число из интервала [1... N]. Также у Поликарпа есть набор из M базовых и K составных операций. Базовые операции называются цепочками. Каждая цепочка с номером i задается числом bli и числами bi, 1, ..., bi, bli. Все числа bi, j целые, различны для одной цепочки и лежат в интервале [1... N]. Это означает следующее: украшение из позиции bi, j переходит в позицию bi, j + 1 для 1 ≤ j < bli. Украшение из позиции bi, bli переходит в позицию bi, 1. Составная операция с номером i описывается так: указывается число cli и cli пар чисел coi, j и cci, j. Каждая пара означает применить цепочку coi, j cci, j раз.

Поликарп проводит опыты над этим набором. Перед началом каждого опыта в i-й слот помещается i-е украшение. Опыт i описывается числом eli и eli парами чисел eoi, j и eci, j. Каждая пара означает применить составную операцию eoi, j eci, j раз. Поликарпу интересно узнать, что окажется в каждом слоте после выполнения очередного опыта.

Входные данные

В первой строке задается целое число N, 1 ≤ N ≤ 100 — количество слотов и украшений.

В следующей строке находится целое число M, 1 ≤ M ≤ 100 — количество цепочек. В следующих M строках находятся описания цепочек. Цепочка описывается целым числом bli, 1 ≤ bli ≤ N и различными целыми числами bi, j из интервала [1... N].

В следующей строке находится целое число K, 1 ≤ K ≤ 100 — количество составных операций. В следующих строках находятся их описания. Каждая составная операция определяется целым числом 1 ≤ cli ≤ 100 — количеством применяемых цепочек. В следующих cli строках идут пары целых чисел coi, j и cci, j, 1 ≤ coi, jM, 1 ≤ cci, j ≤ 109. Пары чисел и их количество располагаются на отдельных строках.

В следующей строке находится целое число L, 1 ≤ L ≤ 100 — количество опытов. В следующих строках находятся их описания. Каждый опыт определяется целым числом 1 ≤ eli ≤ 100 — количеством применяемых составных операций. В следующих eli строках идут пары целых чисел eoi, j и eci, j, 1 ≤ eoi, jK, 1 ≤ eci, j ≤ 109. Пары чисел и их количество располагаются на отдельных строках.

Выходные данные

Для каждого опыта на отдельной строке необходимо вывести N чисел — украшение с каким номером располагается в слоте i для всех целых i из интервала [1... N].

Примеры
Входные данные
7
2
4 1 2 3 4
3 4 5 7
2
1
1 1
1
2 1
3
1
1 1
1
2 1
2
1 1
2 1
Выходные данные
4 1 2 3 5 6 7 
1 2 3 7 4 6 5
4 1 2 7 3 6 5
I. Поликарп и теплообменники
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В очередной раз Поликарп решил провести опыт. В этот раз у него есть набор треугольных теплообменников, расположенных на поле. У каждого теплообменника i есть две части — вход и выход, а также входной и выходной коэффициенты kini и kouti соответственно. Если два теплообменника касаются или пересекают друг друга, то их входы сплавливаются в один с коэффициентом k, который считается по формуле , где k1 и k2 — входный коэффициенты исходных входов теплообменников. Из каждой точки поля выходит некоторое количество тепла в секунду. Это количество умножается на входной коэффициент сплавленных входов и на произведение выходных коэффициентов теплообменников, которую содержат данную точку. Известно, что из квадрата с длиной 1 на поле выходит 1 единица тепла. Поликарпу интересно узнать, сколько тепла выделяют теплообменники.

Входные данные

В первой строчке расположено целое число N, 1 ≤ N ≤ 10 — количество теплообменников.

В следующих N строчках расположено по 8 чисел, разделенные пробелом: x1i, y1i, x2i, y2i, x3i, y3i, kini, kouti — координаты вершин теплообменника, входной и выходной коэффициенты соответственно. Координаты целые и по модулю не превышают 200. Коэффициенты представляют собой дробные числа от 0.1 до 2.0. Гарантируется, что треугольники не вырожденные.

Выходные данные

Надо вывести единственное число — количество тепла, которое выделяют теплообменники. Ответ необходимо вывести с точностью не менее 10 - 4.

Примеры
Входные данные
2
0 0 4 4 8 0 1 1
1 3 7 3 4 -1 1 1
Выходные данные
9.51785700
Входные данные
2
-100 100 -100 -100 75 -100 0.5 2
100 100 100 -100 -75 -100 0.5 2
Выходные данные
17500.00000000
J. Поликарп и делимое
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть немного свободного времени, набор N десятичных цифр c1, ... , cN и положительное число A. Он хочет найти такое положительное число B, такое, что B кратно A и B состоит из цифр набора {ci}, 1 ≤ i ≤ N. Каждую цифру из набора можно использовать произвольное число раз. Необязательно использовать их все.

Входные данные

В первой строке находится единственное число N — количество цифр в наборе {ci}, 1 ≤ N ≤ 10.

Во второй строке находится N целых чисел ci (0 ≤ ci ≤ 9) — набор цифр {ci}. Каждая цифра встречается не более одного раза.

В третьей строке находится целое число A, 1 ≤ A ≤ 105.

Выходные данные

Если можно найти число B, соответствующее условиям, выведите его. В противном случае выведите -1.

Примеры
Входные данные
3
3 5 7
123
Выходные данные
5535
Входные данные
1
1
1230
Выходные данные
-1
K. Поликарп и лампочки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп по-прежнему продолжает опыты с освещением. В этот раз он освещает цилиндр множеством прозрачных лампочек. Центр нижнего основания находится в точке (xc, yc, 0), его высота равна h, радиус равен r. Нижнее основание лежит в плоскости xOy, верхнее параллельно ему и с центром в точке (xc, yc, h). Также Поликарп приготовил N лампочек, i-я лампочка находится в точке (xi, yi, zi). Размером лампочек можно пренебречь. Лампочки очень мощные, поэтому они освещают все точки пространства, на пути к которым нет препятствий. Цилиндр сплошной и не пропускает свет. Поликарпу интересно узнать площадь освещенной части поверхности цилиндра.

Входные данные

В первой строке находятся четыре числа, разделенных пробелами: xc, yc, h, r — координаты центра нижнего основания, высота и радиус цилиндра соответственно.

Во второй строке находится единственное целое число N — количество лампочек.

В следующих N строках располагаются тройки целых чисел: xi, yi, zi — координаты лампочек. Числа разделены пробелами.

Все координаты по модулю не превышают 1000. 1 ≤ h, r ≤ 1000. 1 ≤ N ≤ 100. Гарантируется, что лампочки не находятся на границе или внутри цилиндра. В одной точке может находиться не более одной лампочки.

Выходные данные

Необходимо вывести площадь освещенной части поверхности цилиндра. Площадь считается правильной, если относительная или абсолютная погрешность не превосходит 10 - 6.

Примеры
Входные данные
0 0 10 10
1
0 0 100
Выходные данные
314.15926536
Входные данные
0 0 10 10
4
-100 0 -100
0 -100 -25
100 0 25
0 100 100
Выходные данные
1256.63706144
Примечание

Лампочка освещает нижнее основание, только если она находится под ним, и верхнее, если находится над ним. Если лампочка находится в одной плоскости с основанием, она его не освещает.

L. Поликарп и перестановки
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Поликарпа есть набор чисел 1, ..., N, а также параметры M и K. Поликарпа интересует количество перестановок {ai} из чисел 1, ..., N, таких, что в них ровно M инверсий и K чисел на своем месте. Инверсией называется пара чисел i, j, таких, что ai > aj и i < j. Число i находится на своем месте, если ai = i.

Входные данные

В единственной строке располагаются три целых числа: N, M, K. 1 ≤ N ≤ 14, , 0 ≤ K ≤ N.

Выходные данные

Единственное число — количество перестановок.

Примеры
Входные данные
4 0 4
Выходные данные
1
Входные данные
12 7 3
Выходные данные
3000
Входные данные
12 25 0
Выходные данные
3612516
Входные данные
12 66 0
Выходные данные
1