ICPC Central Russia Regional Qualification Round, 2024
Statement is not available in English language
A. Телефонные номера
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У профессора Р. есть записная книжка, в которой он хранит номера телефонов, по которым когда-то звонил. Главная проблема заключается в том, что номера в ней записаны в разных форматах. Так, все городские номера телефонов были записаны без кода города, а мобильные – без указания кода страны либо без восьмёрки в начале номера, причём все городские номера состояли из шести цифр, а мобильные – из десяти либо одиннадцати с восьмёркой в начале.

Профессор решил записать номера следующим образом: городские записать в формате +7(XXXX)XX-XX-XX, где XXXX – код города. Так как сейчас профессор Р. живёт в Ярославле, то код города в его случае будет равен 4852, однако не всё так просто: некоторое время профессор прожил в Майкопе, где все городские номера начинались с цифры 5, причём по счастливой случайности оказалось, что ни один ярославский городской номер в записной книжке Р. не начинался с 5. Для таких номеров кодом города стоит указать число 8772. С мобильными номерами всё проще: они должны быть записаны в формате +7(XXX)XXX-XX-XX.

Помогите профессору Р. – запишите очередной номер в его записной книжке в указанном формате.

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

В единственной строке содержится номер телефона, состоящий либо из 6, либо из 10 или 11 цифр.

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

В единственной строке выведите строку – номер телефона в правильном формате.

Примеры
Входные данные
528529
Выходные данные
+7(8772)52-85-29
Входные данные
732624
Выходные данные
+7(4852)73-26-24
Входные данные
7124678221
Выходные данные
+7(712)467-82-21
Входные данные
87124679317
Выходные данные
+7(712)467-93-17

Statement is not available in English language
B. QR-код
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Сегодня, придя на пару по дискретной математике, профессор Р. решил рассказать студентам первого курса о генерации QR-кодов.

QR-код – это монохромная картинка, на которой некоторые устройства (например смартфон со специальным приложением) распознают текст. Этим текстом может быть не только простая фраза, но и, хоть это и не входит в официальную спецификацию, ссылка, номер телефона или визитная карточка. Такие коды чаще всего используют, чтобы закодировать ссылку и распечатать её на плакате или визитке.

QR-код поддерживает несколько способов кодирования данных, в зависимости от того, какие символы используются: цифровое, буквенно-цифровое, кандзи (китайско-японские иероглифы) и побайтовое кодирование. Так как студенты учатся на первом курсе, профессор Р. решил затронуть только цифровое кодирование. Цифровое кодирование подразумевает использование только цифр от 0 до 9. Сначала требуется создать пустую последовательность бит, которая дальше будет заполняться.

Этот тип кодирования требует $$$10$$$ бит на $$$3$$$ символа. Вся последовательность символов разбивается на группы по $$$3$$$ цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.

Например, есть строка «12345678», которую надо закодировать. Мы разбиваем её на числа: $$$123, 456$$$ и $$$78$$$, затем переводим каждое из них в двоичный вид: $$$0001111011, 0111001000$$$ и $$$1001110$$$, и объединяем это в один поток: $$$000111101101110010001001110$$$.

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

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

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

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

В единственной строке выведите последовательность из $$$0$$$ и $$$1$$$ – цифровой код, полученный из исходной последовательности

Пример
Входные данные
12345678
Выходные данные
000111101101110010001001110

Statement is not available in English language
C. Незнайка и стопка визиток
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Незнайка решил открыть кружок по спортивному программированию. Для этого Незнайка сделал огромное количество визиток с qr-кодами и сложил их в одну стопку, забыв исходное напечатанное количество. Чтобы вспомнить, сколько было визиток, Незнайка выполнил $$$k$$$ последовательных действий. Он брал самую маленькую стопку визиток разбивал ее на две стопки по $$$a$$$ и $$$b$$$ визиток таким образом, чтобы в двух получившихся стопках было либо одинаковое количество визиток, либо чтобы количества визиток в стопках отличались ровно на 1 визитку, после чего возвращал эти стопки обратно к остальным. После всех $$$k$$$ действий Незнайка смог посчитать, что в самой маленькой стопке лежит ровно $$$n$$$ визиток.

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

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

Первая строка содержит целое число $$$t$$$ $$$(1 \le t \le 1600)$$$ – количество наборов входных данных.

Каждый набор входных данных содержит два целых числа $$$n$$$ и $$$k$$$ $$$(1\leq n,k\leq 40)$$$  — количество визиток в стопке после всех действий и количество действий, которое произвел Незнайка.

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

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

Система оценки

В задаче 2 теста, ограничения для которых указаны ниже. Тесты из условия оцениваются в 0 баллов.

Примеры
Входные данные
1
2 5
Выходные данные
95 64
Входные данные
2
5 3
10 4
Выходные данные
47 40
175 160

Statement is not available in English language
D. Задача на графы
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Также профессор ввёл понятие высоты дерева. Высота двоичного дерева – высота его корневого узла. Дерево из примера имеет высоту 6. Вершины, находящиеся на одной высоте, образуют уровни с первого (корень) по шестой (вершины с номерами $$$3$$$ и $$$5$$$)

На дом студентам была дана следующая задача.

Имеется бинарное дерево, обладающее следующими свойствами:

  1. Его высота равна $$$n$$$;
  2. На уровнях $$$1 \dots n - 2$$$ у каждой вершины $$$2$$$ сына.

Требуется вычислить, каким минимальным и максимальным может быть количество вершин в этом дереве.

Помогите студентам – напишите программу, которая сможет найти требуемые профессором Р. значения.

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

В единственной строке содержится число $$$n$$$ $$$(1 \le n \le 10^{18})$$$ – высота бинарного дерева.

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

В единственной строке выведите два числа разделенных пробелом – минимальное и максимальное число вершин в искомом бинарном дереве. Так как это число может быть очень большим, требуется вывести остатки от деления количеств вершин на число $$$10^9 + 7$$$.

Примеры
Входные данные
1
Выходные данные
1 1
Входные данные
1000000
Выходные данные
617521033 235042058

Statement is not available in English language
E. Пипетка
ограничение по времени на тест
0.25 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Для постепенного добавления веществ в химии используются пипетки различных видов. Представьте, что у Вас в наличии есть пипетка, градуированная на $$$ n $$$ одинаковых делений. Жидкость, налитая в пипетку, имеет вязкость $$$ \eta $$$. Для простоты считайте, что все капли, формируемые пипеткой, имеют объём, равный одному делению, а время формирования такой капли описывается формулой $$$ t = \lceil h / \eta \rceil $$$, где $$$ \eta $$$ – коэффициент вязкости; $$$ h $$$ – высота жидкости в пипетке (в делениях) на момент формирования капли; а $$$ \lceil x \rceil $$$ – округление числа $$$x$$$ вверх к ближайшему целому.

Напишите программу, которая по заданным целым величинам $$$ n $$$, и $$$ \eta $$$ вычислит суммарное время, за которое вся жидкость вытечет из пипетки.

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

В единственной строке содержатся два целых числа, разделенных пробелом: $$$ n $$$ ($$$ 1 \leq n \leq 10^{18} $$$), и $$$ \eta $$$ ($$$ 1 \leq \eta \leq 1000 $$$).

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

В единственной строке выведите число – количество секунд, за которое опустеет пипетка.

Примеры
Входные данные
15 4
Выходные данные
36
Входные данные
10 1
Выходные данные
55

Statement is not available in English language
F. Магазин
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

В далеком 2094 году в Киберславле, простояв в очереди длиной полквартала, Q покупателей пришли в продовольственный магазин. Здесь на полках расположены товары N типов, каждый из которых стоит ai крышек. Причём запас товаров в таком профиците, что можно считать количество товаров каждого типа неограниченным.

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

Для каждого покупателя определите ненулевую сумму, которая окажется у него после покупки товаров по вышеуказанным правилам.

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

В первой строке через пробел записаны два числа N и Q (1  ≤  N, Q  ≤  104) – количество типов товаров и покупателей соответственно.

Во второй строке через пробел записаны N чисел ai – цена каждого товара (1  ≤  ai  ≤  109).

В третьей строке через пробел записаны Q чисел bi – количество денег у каждого покупателя (1  ≤  bi  ≤  109).

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

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

Система оценки

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

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

Statement is not available in English language
G. Игра с камнями
ограничение по времени на тест
1.5 секунд
ограничение по памяти на тест
4 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Саша и Алексей придумали новую игру с камнями и спешат поделиться ею с вами. В начале игры имеются две кучки камней, в одной $$$a$$$ камней, в другой – $$$b$$$. За один ход разрешается взять либо $$$1$$$ камень из меньшей кучки, либо $$$2$$$ из большей. Если в кучках одинаковое количество камней, то разрешается сделать любой из двух возможных ходов. Если осталась одна кучка из $$$1$$$ камня, а вторая пустая, то мы можем взять последний камень. Побеждает тот, кто взял последний камень. Саша и Алексей придумали правила, но не смогли определиться с лучшей стратегией. Помогите им определить, кто победит при оптимальной игре.

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

В единственной строке содержатся числа $$$a$$$ и $$$b$$$, разделенные пробелом $$$(1 \le a, b \le 20000)$$$.

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

В единственной строке выведите $$$1$$$, если победит первый игрок, либо $$$2$$$ в противном случае.

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

Statement is not available in English language
H. Разноцветные кубики
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Однажды маленькая Уля собирала башню из разноцветных кубиков. Красный поставила на синий, а зелёный — на красный. Улина мама была рядом и, наблюдая за растущей башней, задумалась: удастся ли завершить строительство, используя все имеющиеся кубики так, чтобы никакие два кубика одинакового цвета в башне не располагались по соседству?

Не написать задачу после этого было невозможно.

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

В первой строке следует целое положительное число $$$n$$$ ($$$1 \le n \le 100$$$) — количество цветов, в которые окрашены кубики.

Во второй строке следует последовательность $$$a_1$$$, $$$a_2$$$, ..., $$$a_n$$$ ($$$1 \le a_i \le 1000$$$), где $$$a_i$$$ равно количеству кубиков цвета $$$i$$$. Цвета нумеруются с 1.

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

Если расположить нужным образом кубики невозможно, в первую строку выведите $$$-1$$$.

В противном случае, в первую строку выведите общее количество кубиков, а во вторую — последовательность целых чисел $$$c_1$$$, $$$c_2$$$, ..., $$$c_m$$$, где $$$c_j$$$ — цвет кубика c номером $$$j$$$. Кубики в башне нумеруются снизу вверх, начиная с 1.

Если ответов несколько, разрешается вывести любой из них.

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

Statement is not available in English language
I. Незнайка на Луне
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Незнайка приземлился на Луну и находится на 1 платформе. Незнайке предстоит сложный путь до платформы с номером $$$n$$$, чтобы доставить посылку.

На Луне располагается $$$n$$$ платформ, каждая платформа находится на высоте $$$a_i$$$. Гравитация на Луне позволяет Незнайке безопасно прыгать с $$$i$$$-й платформы на $$$j$$$-ю платформу, если разница между номерами платформ не превышает значения $$$d$$$ ($$$|i-j| \leq d$$$) и $$$j$$$-я платформа не более чем на $$$h$$$ ($$$a_j-a_i\leq h$$$) выше $$$i$$$-й платформы.

Помогите Незнайке определить, за какое минимальное количество прыжков он сможет добраться до $$$n$$$-й платформы.

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

В первой строке задано три целых числа $$$n$$$, $$$d$$$, $$$h$$$ $$$(1\leq n, d\leq 10000,1\leq h\leq 1000000)$$$  — количество платформ, расстояние прыжка и высота прыжка Незнайки.

Во второй строке через пробел заданы $$$n$$$ целых чисел $$$a_i$$$ $$$(1\leq a_i\leq 1000000)$$$  — высота $$$i$$$-й платформы.

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

В единственной строке выведите число – минимальное количество прыжков, за которое Незнайка доберется с 1 платформы до $$$n$$$ платформы. Если Незнайка не может добраться до $$$n$$$-й платформы, в единственной строке выведите -1.

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

J. Prompts
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

With the introduction of Large Language Models (LLMs), Alex began to actively use them for various purposes: to explain an incomprehensible topic on the subject, make a training plan, and even write a birthday greeting to his friends. To use LLM, you need to write a lead-in called prompt. The aim of the prompt is to explain to the model what is to be done and what is expected as a response. Thus the whole question cannot consist of a prompt only. The prompt usually looks like this:

You work as a proofreader for educational books. Rewrite the following text, correcting grammatical, punctuation, and semantic errors.

Alex's friends also began using LLMs and actively sharing their generation results. Alex decided to make a collection of successful prompts to use them more actively later. A prompt is considered successful if the result of most generations with this prompt is considered successful.

Alex has a set of questions that he and his friends have asked LLM. He came up with the following algorithm to find all the prompts from a set of questions:

  1. At the beginning, all questions are divided into two non-empty sequences of words called the prefix and suffix of the string. If you write all the words from the prefix and suffix sequentially with a space, you will get the original question. Then only the prefixes are processed.
  2. Next, two random prefixes $$$q_i$$$ and $$$q_j$$$ are taken. If these prefixes have the largest common non-zero prefix $$$q^{*}$$$ such that $$$q_i = q^{*} + q_i^{+}$$$ and $$$q_j = q^{*} + q_j^{+}$$$, then $$$q_i$$$ and $$$q_j$$$ are replaced by $$$q^{*}$$$ and are not processed further (By $$$q+$$$ we mean a non-empty subsequence of words from $$$q$$$).
  3. Step 2 is repeated as long as it is possible to replace prefix pairs by the largest common non-zero prefixes.

At the end of this algorithm, we obtain the set of all prompts for the questions.

Help Alex: find all the successful prompts from the questions Alex and his friends asked LLM.

Input

The first line of the input contains a single non-negative integer $$$N$$$ — the number of questions ($$$1 \le N \le 1000$$$).

The second line of the input data contains $$$N$$$ numbers; the $$$i$$$-th number is 0 if the generation result for the $$$i$$$-th question was unsuccessful and 1 if the generation result for the $$$i$$$th question was successful.

The following $$$N$$$ non-empty lines contain questions — sequences of words separated by a space. A word is a sequence of characters of the Latin alphabet, which may end with a punctuation mark. The length of the line does not exceed 10000, and the number of words in the line does not exceed 1000.

Output

Print all the successful prompts that can be obtained from the questions on separate lines in any order.

Example
Input
7
0 1 1 1 1 0 1
Create text about my mom
Summarize Crime and Punishment
Create text about my friend
Create text about my boss
Summarize calculus book
Summarize Harry Potter
Create text about my dog
Output
Create text about my
Summarize

Statement is not available in English language
K. Незнайка и последовательность
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Незнайка решил задать собственную последовательность, в которой каждый элемент задаётся формулой $$$a_i=(a_{i-1}+2*a_{i-2}+3*a_{i-3})\% mod$$$, где $$$a_1=1$$$, $$$a_2=1$$$, $$$a_3=2$$$, $$$mod=10^9+7$$$, а символ % обозначает взятие остатка от деления.

Незнайка сильно обрадовался собственной последовательности, однако посчитать, чему равняется $$$n$$$-й элемент, не может. Помогите Незнайке определить $$$n$$$-й элемент.

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

В единственной строке задано целое число $$$n$$$ $$$(1\leq n\leq 10^{12})$$$  — номер элемента в последовательности Незнайки.

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

В единственной строке выведите $$$n$$$-й элемент последовательности Незнайки.

Примеры
Входные данные
6
Выходные данные
34
Входные данные
10
Выходные данные
1096
Входные данные
500
Выходные данные
340736120