ICPC Central Russia Regional Contest - 2020
A. Проблемы мотивации
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сложно писать олимпиады, когда не понимаешь, как они могут помочь тебе в дальнейшем. Поэтому после очередного проигрыша дух в команде упал и желание писать олимпиадки куда-то ушло. Тренер вовремя заметил это и решил что-то предпринять – ведь он-то понимает, куда может завести участие во всех этих мероприятиях. После долгих раздумий он понял — нужно просто показать команде её перспективы! Тогда он, для простоты, представил все возможные варианты развития карьеры после участия в олимпиадах в виде корневого дерева. Каждая его вершина — некоторая должность в престижной IT-компании, а рёбра проведены между должностями только если возможен карьерный рост с одной должности на другую. Естественно, участие в олимпиадах позволяет легче продвигаться по этому дереву, и тренер поспешил показать это дерево команде!

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

Помогите тренеру промотивировать ребят — найдите необходимое множество должностей.

Формально говоря, вам дано корневое дерево на N вершинах, и вам надо выбрать K вершин так, чтобы их наименьший общий предок был как можно дальше от корня.

Наименьший общий предок нескольких вершин — это такая вершина, что её расстояние от корня максимально и из неё можно добраться до любой из выбранных вершин, если идти в направлении от корня.

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

В первой строке входных данных вам даны два числа — N и K (1 ≤ K ≤ N ≤ 105) — количество должностей и количество должностей, которое должен найти тренер.

В следующей строке вам дано N - 1 число, каждое из которых не превосходит N. i-е из них содержит номер должности, из которой можно пойти на повышение в i + 1-ю. Должность с номером 1 считается корневой. Гарантируется, что данная структура является деревом с корнем в первой вершине.

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

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

Примеры
Входные данные
5 2
5 1 1 1
Выходные данные
5 2 
Входные данные
9 3
6 9 1 9 4 9 4 1
Выходные данные
4 6 2 
Примечание

Во втором тесте граф выглядит так:

В качестве ответа также можно вывести следующие тройки:

(5, 3, 7); (8, 4, 2); (9, 5, 7);

B. Время жать
ограничение по времени на тест
2.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Помимо работы системным администратором Дементий очень любит выращивать валерьянку и добавлять её в чай.

На столе у Дементия карта его одномерного поля валерьянки. Сегодня он планирует собрать урожай. Дементий скашивает стебли валерьянки специальной косилкой, лезвия которой висят над землёй на определённой высоте, которую можно регулировать. Дементий $$$K$$$ раз задаётся вопросом — сколько валерьянки он соберёт, если повесит лезвия на $$$L$$$ сантиметров над землёй?

Формально, количество собранной Дементием валерьянки определяется по формуле:

$$$$$$\sum\limits_{i=1}^N max(a_i - L, 0),$$$$$$

где $$$L$$$ – высота лезвий, $$$a_i$$$ – высота $$$i$$$-го кустика валерьянки.

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

Первая строка входных данных содержит число $$$N$$$ — количество кустиков валерьянки в огороде Дементия $$$(1 \le N \le 10^5)$$$.

Вторая строка входных данных содержит $$$N$$$ чисел $$$a_i$$$ — высота $$$i$$$-го кустика валерьянки в сантиметрах $$$(0 \le a_i \le 10^9)$$$.

Третья строка входных данных содержит число $$$K$$$ — количество запросов $$$(1 \le K \le 10^5)$$$.

Последующие $$$K$$$ строк содержит по одному числу $$$L_i$$$ $$$(0 \le L_i \le 10^9)$$$ — высота, на которую Дементий хочет поднять лезвия газонокосилки.

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

В каждой из $$$K$$$ отдельных строк выведите одно число – ответы на запросы садовода.

Примеры
Входные данные
4
0 0 0 0
3
0
1
2
Выходные данные
0
0
0
Входные данные
5
4 0 2 1 2
7
0
1
2
3
4
5
6
Выходные данные
9
5
2
1
0
0
0

C. Везёт. Не везёт
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Недавно Домин заказал в интернет-магазине условие для одной из задач, и теперь ожидает его доставки по почте. Домин живет в стране, состоящей из n городов, причем между некоторыми городами u и v есть двустороннее почтовое сообщение, которое работает лишь в w-й день недели (всего в неделе 7 дней). Также доставку можно произвести из любого города в любой другой (возможно, через другие города). Посылка может быть отправлена утром из одного города по открытому сообщению и прибыть в другой к вечеру, или пролежать в почтовом отделении несколько дней, пока сообщение не заработает.

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

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

В первой строке содержатся 4 числа: n, m (2 ≤ n ≤ 105, ) — количество городов и сообщений, s и k (1 ≤ s, k ≤ n и s ≠ k) — номер города со складом и город, где живет Домин.

В следующих m строках описываются почтовые сообщения, в каждой три числа: u, v, w (1 ≤ u, v ≤ n, u ≠ v и 1 ≤ w ≤ 7) — номера городов, между которыми есть сообщение и день, в который между городами u и v работает почтовое сообщение.

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

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

Пример
Входные данные
5 5 1 5
1 2 1
2 3 2
3 4 3
4 5 4
1 5 5
Выходные данные
4
Примечание

В первом примере ответ 4 дня, так как посылка, пройдя по пути 1 - 2 - 3 - 4 - 5, прибудет к вечеру четвертого дня недели и Домин заберет её утром пятого дня. А если она будет отправлена напрямую, то она прибудет к вечеру пятого дня, и Домин сможет забрать её утром шестого дня, то есть ждать её придется 5 дней.

D. Медиана Профессора Р.
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В математической статистике есть такое понятие, как медиана ряда чисел. Медианой ряда чисел называется число, стоящее посередине упорядоченного по возрастанию ряда чисел (в случае, если количество чисел нечётное). Если же количество чисел в ряду чётно, то медианой ряда является полусумма двух стоящих посередине чисел упорядоченного по возрастанию ряда.

Но в Ярославском университете не дремлют и изобрели новое понятие – медиана профессора Р. Определим её. Медианой профессора Р. ряда чисел называют число из этого ряда, ближайшее к полусумме минимального и максимального, причем, если таких чисел несколько, из них выбирается минимальное по значению. Ваша задача – найти медиану Профессора Р. в заданном ряде чисел.

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

В первой строке содержится единственное число n (1 ≤ n ≤ 105) – число элементов.

Во второй строке содержатся n целых чисел ai, разделенных пробелом – элементы ряда чисел (|ai| ≤ 2·109).

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

В единственной строке выведите значение медианы профессора Р. для заданного ряда чисел.

Примеры
Входные данные
5
1 1 1 1 1
Выходные данные
1
Входные данные
3
1 2 3
Выходные данные
2

E. Турнир горцев
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В далекие времена, о которых никто не помнит, проходил турнир горцев. Турнир этот был не на жизнь, а на смерть, но за жизнь! В турнире принимали участие n горцев, выстроившихся в шеренгу. Каждый боец был наделен силой, сила i-го горца определялась величиной pi, при этом отметим, что не было горцев с одинаковой силой. Сам турнир проводился в m этапов. До начала каждого сражения великий вождь Гыда выбирал несколько подряд выстроившихся горцев из шеренги. Выбранная группа начинала сражение, где каждый сражался сам за себя, побеждал сильнейший. После битвы победитель вставал на свое место в шеренге, затем шеренга смыкалась и бойцы опять стояли плечо к плечу. Вам требуется вывести силы бойцов в шеренге после окончания турнира.

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

Первая строка содержит два целых числа n и m. n — количество сражающихся горцев в турнире (1 ≤ n ≤ 2·105). m — количество проводимых сражений (1 ≤ m ≤ 105).

Следующая строка содержит показатели силы pi каждого горца (1 ≤ pi ≤ 109).

Следующие m строк содержат пары чисел l и r (l ≤ r), которые задают диапазон номеров горцев, сражающихся в шеренге.

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

Выведите силы бойцов в шеренге после окончания турнира.

Примеры
Входные данные
7 4
48 1 57 25 69 26 88
1 2
2 3
2 5
1 2
Выходные данные
88 
Входные данные
10 3
8 27 4 1 9 2 10 66 43 13
1 4
1 2
2 4
Выходные данные
27 66 43 13 

F. Квадратный транзит
ограничение по времени на тест
5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Квадратная страна имеет ширину $$$x_{max}$$$ ($$$1 \leq x_{max} \leq 10^4$$$) и длину $$$y_{max}$$$ ($$$1 \leq y_{max} \leq 10^4$$$). Железнодорожная сеть состоит из $$$n$$$($$$1 \leq n \leq 10^4$$$) стрелок и двух таможен, которые соединены $$$m$$$ ($$$1 \leq m \leq 30000$$$) прямыми отрезками железной дороги. Координаты стрелок $$$(x_i, y_i)$$$ – целые числа, координаты таможенных пунктов $$$(s, 0)$$$ $$$(t, y_{max})$$$ также целые, и лежат на противоположных границах. Отрезки железной дороги соединяют только стрелки (и таможенные пункты), и не пересекаются в других точках. Координаты всех стрелок и таможенных пунктов различны.

Через отрезок железной дороги между двумя стрелками может проследовать поезд длины не превосходящий длину этого отрезка. Длина отрезка дороги, соединяющего две стрелки (или таможни) – это расстояние между точками на плоскости. Длина поезда – это количество вагонов в нем. Все вагоны одинаковы, и имеют длину $$$1$$$. Таким образом, через отрезок длины $$$4.5$$$ может проехать поезд не более чем из $$$4$$$ вагонов, а через через отрезок длины $$$10$$$ – не более $$$10$$$ вагонов.

Поезд может двигаться по железной дороге в любом направлении. Более того, он может в произвольный момент остановиться и сменить направление движения на противоположное. Поезд не может занимать одновременно более чем одну стрелку (но может касаться их своими концами). При прохождении стрелки, состав не может отклониться более чем на $$$60$$$ градусов от прежнего направления движения (то есть, поезд не может изгибаться произвольно – угол между соседними вагонами не может быть острее $$$120$$$ градусов).

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

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

Первая строка содержит $$$2$$$ целых числа - размеры страны $$$x_{max}$$$ ($$$1 \leq x_{max} \leq 10^4$$$) и $$$y_{max}$$$ ($$$1 \leq y_{max} \leq 10^4$$$).

Вторая строка содержит целые $$$x$$$-координаты таможен $$$s$$$ и $$$t$$$ ($$$0 \leq s, t \leq x_{max} $$$).

Третья строка содержит $$$2$$$ целых – число стрелок $$$n$$$ ($$$1 \leq n \leq 10^4$$$) и число отрезков железных дорог $$$m$$$ ($$$1 \leq m \leq 30000$$$).

Далее следуют $$$n$$$ строк с парами целых $$$x_i$$$ и $$$y_i$$$ ($$$0 \leq x_i \leq x_{max}; 0 \leq y_i \leq y_{max} $$$) – координаты стрелок.

За ними следуют $$$m$$$ строк, описывающих отрезки железной дороги. Каждый отрезок описывается парой целых $$$u_i$$$ и $$$v_i$$$ ($$$0 \leq u_i, v_i \leq n + 1$$$) – номерами соединяемых стрелок. Стрелки нумеруются числами от $$$1$$$ до $$$n$$$ в порядке появления во входных данных. Таможня с координатами $$$(s, 0)$$$ имеет номер $$$0$$$, а таможня с координатами $$$(t, y_{max})$$$ номер $$$n + 1$$$. Отрезки железной дороги не пересекаются, и не имеют общих точке кроме стрелок (или таможен). Отрезок не может соединять стрелку саму с собой. Две стрелки не могут быть соединены более одного раза.

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

Выведите $$$0$$$, если никакой поезд не может проехать между таможнями. В противном случае выведите целое число – максимальное количество вагонов в транзитном поезде.

Пример
Входные данные
6 16
0 0
4 5
0 4
3 8
0 12
6 8
0 1
1 2
2 3
3 5
2 4
Выходные данные
3

G. Строка прогресса
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Строки прогресса часто используются для отображения текущего состояния работающего процесса. Одним из видов таких строк являются блочные. Блочная строка состоит из $$$n$$$ одинаковых блоков. Для отображения прогресса, доля выполнения которого составляет $$$p$$$ ($$$0 \leq p \leq 1$$$), это число умножается на $$$n$$$, и полученное число округляется к ближайшему целому. Получается число $$$k = round(p \cdot n)$$$. Далее, в строке прогресса отображается $$$k$$$ блоков.

Если процессы работают быстро, то очень редко можно увидеть полностью заполненную строку, поэтому $$$n$$$ можно определить не всегда. Пусть нам удалось посчитать число блоков $$$k_1$$$ для процесса, выполнившего треть работы ($$$p = 1/3$$$), и число $$$k_2$$$ для процесса? отработавшего наполовину ($$$p = 1/2$$$). Определите, какие числа $$$n$$$ подходят под эти условия, или сообщите, что таких чисел нет.

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

Единственная строка содержит два числа $$$k_1$$$ и $$$k_2$$$ ($$$1 \leq k_1 \leq k_2 \leq 10^6$$$), разделенных пробелом.

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

Если решения не существует выведите 0. Если есть подходящие $$$n$$$, то выведите их по возрастанию, в одну строку, разделяя пробелом.

Примеры
Входные данные
3 5
Выходные данные
9 10
Входные данные
3 4
Выходные данные
8
Входные данные
4 5
Выходные данные
0

H. Шахматный конь на бордюре
ограничение по времени на тест
0.25 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Из клетчатого поля размером $$$n$$$ строк и $$$m$$$ столбцов ($$$5 \leq n, m \leq 1000$$$) вырезали внутреннюю часть размером $$$(n-4)\times(m-4)$$$ так, что по сторонам остались полоски шириной 2 клетки.

На левой верхней клетке поля стоит шахматный конь. Можно ли, используя только узкие бордюры шириной 2 клетки, обойти конем вокруг выреза и вернуться на исходную клетку? И если да, то какое минимальное число ходов для этого необходимо (конь ходит по шахматным правилам)?

Например, если есть поле $$$5\times5$$$ (вырезана клетка $$$(3, 3)$$$), то конь может обойти вокруг выреза за $$$4$$$ хода: $$$(1, 1) \rightarrow (3, 2) \rightarrow (4, 4) \rightarrow (2, 3) \rightarrow (1, 1)$$$.

Примечание. В момент движения конь не может перескакивать через вырезанные клетки.

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

На вход подаются размеры поля в виде двух целых чисел $$$n$$$ и $$$m$$$ ($$$5 \leq n, m \leq 1000$$$), разделенных пробелом.

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

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

Примеры
Входные данные
5 5
Выходные данные
4
Входные данные
20 15
Выходные данные
30
Входные данные
1000 1000
Выходные данные
1996
Входные данные
5 6
Выходные данные
6

I. Фараон hEx
ограничение по времени на тест
0.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Фараон hEx правил квадратной страной много тысяч лет назад. Как и у всех предыдущих фараонов, главной целью его жизни, было строительство величественной пирамиды. hEx был тщеславным и очень хотел перещеголять своих предшественников. Как? Конечно же построив большую пирамиду!

Дело в том, что пирамиды всех предыдущих фараонов имели одинаковые размеры, и на это были серьезные причины. Для строительства пирамиды необходимо заложить надежный фундамент из крепкого гранита. Гранит надлежащего качества добывался на единственной каменоломне в виде абсолютно одинаковых кубов. Перевозка этих кубов была непростым делом, и за одну перевозку с каменоломни доставляли ровно $$$n$$$ ($$$1 \leq n \leq 10^9$$$) таких гранитных блоков. Так как основание пирамиды должно быть идеальным квадратом, то все предшествующие фараоны просто совершали $$$n$$$ перевозок и строили пирамиды на основании из $$$n^2$$$ блоков.

Фараон hEx хочет построить свою пирамиду на более крупном фундаменте. Он уже запланировал обязательные $$$n$$$ перевозок по $$$n$$$ кубов, но для увеличения фундамента потребуются дополнительные перевозки. Фараон хочет сделать минимально возможное количество сверхплановых перевозок $$$p$$$. Также он требует, чтобы объем единичной перевозки не сокращался (все те же $$$n$$$ блоков), и чтобы после укладки квадратного фундамента лишних блоков не осталось.

Рассмотрим пример. Пусть $$$n = 4$$$, тогда за $$$4$$$ плановых перевозки будут получены $$$16$$$ блоков, из которых можно уложить фундамент $$$4\times4$$$. Если добавить одну сверхплановую перевозку ($$$p = 1$$$), то будет $$$20$$$ каменных кубов, из которых не получится выложить квадрат, значит $$$p$$$ не может быть единицей. Аналогично, для $$$p = 2, 3, 4$$$ получаем $$$24$$$, $$$28$$$ и $$$32$$$ куба, что также не позволяет уложить их в виде квадрата без остатков. Наконец, при $$$5$$$ сверхплановых поставках получаем $$$36$$$ кубических блоков, из которых можно построить фундамент $$$6\times 6$$$. Значит для $$$n = 4$$$ получим $$$p = 5$$$.

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

Входные данные состоят из единственного целого числа $$$n$$$ ($$$1 \leq n \leq 10^9$$$).

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

Необходимо вывести количество сверхплановых перевозок $$$p$$$ ($$$p \gt 0$$$).

Примеры
Входные данные
1
Выходные данные
3
Входные данные
2
Выходные данные
6
Входные данные
3
Выходные данные
9
Входные данные
4
Выходные данные
5

J. Соединяй и разъединяй 1
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

Для более гибкого управления, конвейерные ленты могут объединяться с помощью устройства, под названием «merger» или разъединяться с помощью устройства «splitter».

Устройство «merger» имеет 3 входа и один выход. Просматривая входы по очереди, устройство перекладывает предметы с входных конвейерных лент на выходную. Для корректной работы «merger»-а необходимо, чтобы предметы подавались конвейером хотя бы на один вход, и снимались с выхода (если выходному конвейеру будет некуда транспортировать предметы, или выходной конвейер остановится из-за переполнения, то устройство остановится).

Устройство «splitter» имеет 1 вход и 3 выхода. Принимая предметы со входного конвейера, «splitter» равномерно, по очереди, перемещает их на подключенные выходные конвейеры. То есть, если все три выхода подключены к работающим конвейерам, то входной поток будет разделен на 3 одинаковых (по 1/3), а если подключены только 2 выхода, то поток разделяется на 2 одинаковых (по 1/2).

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

Пусть у нас имеется соотношение n:m ($$$1 \leqslant n, m; n+m \leqslant 10^{6}$$$). Предложите схему соединения «splitter»-ов и «merger»-ов, которая разбивает входной поток в пропорции $$$n$$$ к $$$m$$$, используя при этом, суммарно, не более 48 «splitter»-ов и «merger»-ов. В вашей схеме не должно быть стоящих конвейеров и устройств. Если есть несколько таких схем, правильной считается любая их них.

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

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

Единственная входная строка содержит 2 целых числа $$$n$$$ и $$$m$$$ ($$$1 \leqslant n, m; n+m \leqslant 10^{6}; gcd(n, m) = 1$$$), разделенные пробелом.

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

Если решения не существует, то вывод должен содержать единственное число 0. Если решение есть, то первая строка вывода содержит целое число $$$k$$$ ($$$0 \lt k \leqslant 48$$$). Далее следуют $$$k$$$ строк, описывающих схему соединения «splitter»-ов и «merger»-ов. Каждая строка содержит описание одного устройства. Устройства нумеруются числами от $$$1$$$ до $$$k$$$ в порядке их появления.

Описание «splitter»-а начинается с заглавной латинской буквы «S». Далее следуют пробел и 3 целых числа, разделенных пробелами – номера устройств, к которым подключены выходы устройства. Если выход не подключен, то в качестве номера следует указать $$$0$$$ (ноль).

Описание «merger»-а начинается с заглавной латинской буквы «M». Далее следует пробел и целое число – номер устройства, куда передается объединенный поток.

Разделяемый входной поток всегда поступает на устройство номер 1. Результат разделения должен поступать на специальные «устройства» с номерами $$$-1$$$ $$$-2$$$. Данные «устройства» можно использовать только однократно.

Примеры
Входные данные
7 5
Выходные данные
5
S 2 3 5
S 3 4 0
M -1
S 3 5 0
M -2
Входные данные
1 4
Выходные данные
5
M 2
S 3 4 5
S -1 4 5
M -2
M 1
Примечание

Схеме разделения входного потока в отношении $$$7$$$ к $$$5$$$ выглядит так: Для это нужно $$$3$$$ splitter-а и $$$2$$$ merger-а. Входной поток поступает на первый модуль - splitter, который делит его на 3 одинаковых подпотока по $$$1/3$$$ от входного. По одной трети идет на выходные merger-ы, еще одна треть с помощью второго splitter-а делится пополам (два подпотока по $$$1/6$$$). Один подпоток $$$1/6$$$ идет на левый merger, второй делится еще один раз. Получившиеся подпотоки по $$$1/12$$$ от входого, направляются на merger-ы. Левый merger соединяет потоки $$$1/3 + 1/6 + 1/12 = 7/12$$$, правый $$$1/3 + 1/12 = 5/12$$$. Получаем соотношение $$$7/12$$$ к $$$5/12$$$ или $$$7$$$ к $$$5$$$.

K. Разделяй и соединяй 2
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

Для более гибкого управления, конвейерные ленты могут объединяться с помощью устройства, под названием «merger» или разъединяться с помощью устройства «splitter».

Устройство «merger» имеет 3 входа и один выход. Просматривая входы по очереди, устройство перекладывает предметы с входных конвейерных лент на выходную. Для корректной работы «merger»-а необходимо, чтобы предметы подавались конвейером хотя бы на один вход, и снимались с выхода (если выходному конвейеру будет некуда транспортировать предметы, или выходной конвейер остановится из-за переполнения, то устройство остановится).

Устройство «splitter» имеет 1 вход и 3 выхода. Принимая предметы со входного конвейера, «splitter» равномерно, по очереди, перемещает их на подключенные выходные конвейеры. То есть, если все три выхода подключены к работающим конвейерам, то входной поток будет разделен на 3 одинаковых (по 1/3), а если подключены только 2 выхода, то поток разделяется на 2 одинаковых (по 1/2).

В игре, для производства, часто необходимо разделить поток на 2 подпотока, в определенном соотношении . На Игровом форуме, Вася обнаружил несколько стандартных схем разделения потока в заданных пропорциях. Взглянув на эти схемы, Вася задумался, а правильно ли они работают?

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

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

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

Первая строка ввода содержит целое число $$$k$$$ ($$$0 \lt k \leqslant 32$$$). Далее следуют $$$k$$$ строк, описывающих схему соединения «splitter»-ов и «merger»-ов. Каждая строка содержит описание одного устройства. Устройства нумеруются числами от $$$1$$$ до $$$k$$$ в порядке их появления.

Описание «splitter»-а начинается с заглавной латинской буквы «S». Далее следуют 3 целых числа, разделенных пробелами – номера устройств, к которым подключены выходы устройства. Если выход не подключен, то в качестве номера указан $$$0$$$ (ноль).

Описание «merger»-а начинается с заглавной латинской буквы «M». Далее следует целое число – номер устройства, куда передается объединенный поток.

Разделяемый входной поток всегда поступает на устройство номер 1. Результат разделения поступает на специальные «устройства» с номерами $$$-1$$$ $$$-2$$$. Данные «устройства» используются строго однократно.

Каждое используемое устройство имеет, как минимум, по одному подключенному входу и выходу. От первого (входного) устройства есть путь к любому другому устройству, а от него – до одного из выходов.

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

Вывод состоит из двух чисел, разделенных пробелом: соотношения потоков, поступающих на выходы $$$-1$$$ и $$$-2$$$. Числа должны быть взаимно просты.

Пример
Входные данные
5
S 2 3 5
S 3 4 0
M -1
S 3 5 0
M -2
Выходные данные
7 5
Примечание

На рисунке приведена схема из первого теста.

На первого устройство поступает единичный поток. На стрелках указана доли от входного потока.

L. Шифр
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Премьер-министр Борляндии, опасаясь, что его электронная почта может быть взломана и переписка станет достоянием общественности, обратился за помощью в лабораторию компьютерной безопасности Борляндского университета, работники которой придумали новый метод шифрования. Они установили, что премьер-министр пишет тексты, состоящие из цифр и строчных латинских букв, количество символов в которых равно в точности степеням двойки, и придумали следующий метод шифровки сообщения – все символы склеиваются в одну большую строку длины 2n. Затем они переворачивают строчку, потом делят ее на две и переворачивают каждую половину, потом делят ее на четыре части и переворачивают каждую четверть, ... , потом он делят ее на 2n - 1 и переворачивают каждую часть. Однако возникла небольшая сложность – ученые ещё не придумали, как восстанавливать первоначально заданную строку. Ваша задача – помочь им написать программу для дешифровки сообщения.

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

На вход дается строка длины 2n (0 ≤ n ≤ 13) – зашифрованное сообщение.

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

В качестве ответа выведите строку длины 2n, состоящую из строчных латинских букв и цифр, которая является ответом на задачу.

Примеры
Входные данные
2301
Выходные данные
0123
Входные данные
mikkmfnz
Выходные данные
fmznimkk

M. Красивый хоккей
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Программист Вася любит хоккей и болеет за самый лучший в мире клуб «200 OK». В хоккее Васе нравятся две вещи: победа любимой команды и красивый счет на табло. При этом красоту игрового счета Вася понимает своеобразно. Так, он называет игру красивой, если каждый период завершился с красивым результатом. Тут стоит пояснить, что хоккейный матч состоит из трёх периодов, а результат каждого периода записывают парой целых неотрицательных чисел. Например, результаты матча могут выглядеть так: $$$(3:0)$$$, $$$(1:3)$$$, $$$(1:1)$$$. Такая запись означает, что в первом периоде первая команда забросила три шайбы, вторая - $$$0$$$; во втором периоде первая забросила $$$1$$$ шайбу, вторая - $$$3$$$; наконец, в третьем периоде обе команды забросили по одной шайбе. В такой игре со счетом $$$5:4$$$ победила первая команда.

Очарованный бинарным кодом Вася считает игру красивой, если каждый период завершился с одним из следующих результатов: $$$(0:0)$$$, $$$(0:1)$$$, $$$(1:0)$$$, $$$(1:1)$$$.

Вася — болельщик со стажем, он давно понял, что существуют ровно $$$22$$$ различных красивых игры, в которых побеждает первая команда (две игры считаются различными, если они отличаются результатом хотя бы одного периода). Однако это справедливо только для матча, состоящего из $$$3$$$ периодов.

Сейчас Вася собрался в ледовую арену на очередной матч и пытается посчитать, сколько существует различных, состоящих из $$$n$$$ периодов, красивых игр, в которых побеждает первая команда.

Помогите Васе найти решение, пока матч не начался.

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

В единственной строке записано число $$$n$$$ — количество периодов в игре $$$(1 \leq n \leq 50000)$$$.

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

В единственной строке выведите остаток от деления искомого количества игр на $$$10^9+7$$$.

Примеры
Входные данные
1
Выходные данные
1
Входные данные
3
Выходные данные
22

N. Контест с багом
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Команда чемпионов по спортивному программированию участвовала в очередных важных соревнованиях, которые длятся $$$K$$$ минут. Они проводились по обычным правилам АСМ, но ребята узнали, что в системе подсчета результатов не всегда верно подсчитывалось штрафное время. А именно, когда штрафное время становилось больше, чем 23 часа 59 минут, то из него вычиталось 24 часа.

Чемпионы, получив набор из $$$N$$$ задач, мгновенно могли определить для каждой из них время $$$t_i$$$ (в минутах), которое потребуется им для того, чтобы решить и отладить программу решения $$$i$$$-й задачи. При этом все задачи чемпионы всегда сдают с первой попытки. Как истинные спортсмены, ребята во время соревнований не тратят ни одной минуты впустую. Как только они сдают очередную задачу, так сразу же начинают решать следующую. Зная об ошибке в подсчете штрафных минут, они хотят определить наилучший результат, который могут показать, если сдавать нужные задачи в нужном порядке. Составьте программу, которая поможет им это сделать.

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

В первой строке через пробел записаны два натуральных числа — длительность соревнования $$$K$$$ в минутах ($$$1\leq K \leq 1000$$$) и количество задач $$$N$$$ ($$$1\leq N \leq 10$$$). Во второй строке через пробел записаны $$$N$$$ натуральных чисел $$$t_i$$$, ($$$1 \leq t_i \leq 1000$$$) — время решения в минутах $$$i$$$-й задачи.

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

Выведите два целых числа, определяющих наилучший возможный результат команды — количество задач $$$М$$$, которые успеет сдать команда за время соревнований и общее штрафное время $$$Т$$$, которое вычисляется описанным выше ошибочным способом.

Примеры
Входные данные
75 5
5 25 15 10 20
Выходные данные
5 175
Входные данные
480 8
3 150 160 2 165 200 2 300
Выходные данные
5 0
Примечание

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

Во втором примере команда успеет решить только 5 из 8 задач. Если они будут сдавать по порядку задачи 5, 2, 1, 7, 4, то суммарное штрафное время составит 165 + (165 + 150) + (165 + 150 + 3) + ( 165 + 150 + 3 + 2 ) + (165 + 150 + 3 + 2 + 2 ) = 165+ 315 + 318 +320 + 322 = 1440 минут, которое будет посчитано за 0 минут.