Хомяк Шустрик получил в подарок от ёжика Шуршика необычный калькулятор. Изначально на экране калькулятора отображается число $$$A$$$.
В инструкции к калькулятору указано фиксированное число $$$M$$$. Все арифметические операции выполняются именно с этим числом. Кроме того, Шуршик загадал числа $$$N$$$ и $$$B$$$ и сообщил их Шустрику.
Калькулятор умеет выполнять только четыре операции, за один шаг можно применить одну из следующих операций:
После выполнения некоторой (возможно, нулевой) последовательности операций получится число $$$A'$$$.
Ёжику Шуршику стало интересно, сможет ли Шустрик получить такое число $$$A'$$$, что
$$$$$$ A' \equiv B \pmod N. $$$$$$
Иначе говоря, числа $$$A'$$$ и $$$B$$$ должны иметь одинаковые остатки при делении на $$$N$$$.
Ваша задача — помочь хомяку найти любую последовательность операций наименьшей длины, после применения которой выполнится указанное условие, либо определить, что получить такое число невозможно.
В единственной строке входных данных дано четыре целых числа через пробел: $$$A$$$, $$$M$$$, $$$B$$$ и $$$N$$$ ($$$|A| \leq 10^9$$$, $$$1 \leq M \leq 10^9$$$, $$$0 \leq B \lt N \leq 2 \cdot 10^6$$$).
Если искомой последовательности операций не существует, в единственной строке выведите «-1».
Иначе, в первой строке выведите длину $$$x$$$ минимальной подходящей последовательности. Во второй строке выведите строку длины $$$x$$$ из символов «+», «-», «*» и «%» — последовательность операций, приводящий изначальное $$$A$$$ в такое $$$A'$$$, что $$$A' \equiv B \pmod N$$$.
Если таких последовательностей несколько, выведите любую из них.
Можно доказать, что длина ответа не превышает $$$N$$$.
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
| Группа | Баллы | Доп. ограничения | Необходимые группы |
| 1 | 7 | $$$|A|, M, N \le 8$$$ | – |
| 2 | 6 | $$$M = 1$$$ | – |
| 3 | 8 | $$$M = N$$$ | – |
| 4 | 12 | $$$M \equiv 0 \pmod N$$$ | 3 |
| 5 | 15 | $$$N \equiv 0 \pmod M$$$ | 2–3 |
| 6 | 16 | $$$N \cdot M \le 2 \cdot 10^{6}$$$ | 1–2 |
| 7 | 18 | $$$A = 0$$$ | – |
| 8 | 18 | – | 1–7 |
1 3 2 5
2 +*
6 7 2 4
0
-1 3 2 4
1 +
5 6 1 6
-1
0 6 3 7
3 ---
5 9 1 8
3 *%+
Рассмотрим ответ на первый пример входных данных:
На линии монорельса находятся $$$n$$$ станций, пронумерованных по порядку от $$$1$$$ до $$$n$$$.
У каждой станции $$$i$$$ есть название $$$s_i$$$ — строка из не более 20 латинских букв. Каждая буква написана на отдельной табличке.
В ходе проекта обновления городской инфраструктуры было принято решение переименовать все станции в некоторые новые названия. Приказ о переименовании уже подписан и вступит в силу с завтрашнего дня. Но вот беда: на самих станциях никто не успел заменить названия на новые. Теперь это ваша задача.
Увы, времени на изготовление новых табличек нет. Поэтому единственная возможная опция — переместить таблички с одних станций на другие.
Формально за одну операцию вы можете выбрать два индекса $$$1 \le i, j \le n$$$, а также любую букву из строки $$$s_i$$$, и перенести эту букву в любое место строки $$$s_j$$$. Такая операция занимает $$$1 + |i - j|$$$ ценнейших единиц времени.
Например, если $$$s_i = \texttt{ab}$$$ и $$$s_j = \texttt{cd}$$$, то за одну операцию переноса буквы из $$$i$$$ в $$$j$$$ можно сделать:
Обратите внимание, что в операции также разрешено выбирать $$$i = j$$$.
Вам нужно как можно быстрее заменить таблички с названиями на каждой станции, чтобы они соответствовали новым названиям. Определите возможно ли это, и если да, минимальное необходимое количество единиц времени.
Первая строка теста содержит единственное число $$$n$$$ ($$$1 \le n \le 10^5$$$) — количество станций на линии.
Вторая строка теста содержит $$$n$$$ строк: $$$s_1, s_2, \ldots, s_n$$$ ($$$1 \le |s_i| \le 20$$$) — изначальные названия станций.
Третья строка теста содержит $$$n$$$ строк: $$$t_1, t_2, \ldots, t_n$$$ ($$$1 \le |t_i| \le 20$$$) — желаемые новые названия станций.
Гарантируется что все строки в тесте состоят из маленьких латинских букв, символы от 'a' до 'z'.
Если не существует способа переименовать все станции, в единственной строке выведите $$$-1$$$. Иначе, выведите одно число: минимально возможное суммарное время выполнения операций для переименования.
| Группа | Баллы | Доп. ограничения | Необходимые группы |
| 1 | 14 | $$$n = 1$$$ | – |
| 2 | 17 | $$$\operatorname{sorted}(s_i) = \operatorname{sorted}(t_i) $$$ | – |
| 3 | 25 | $$$s_i$$$ и $$$t_i$$$ не имеют общих букв | – |
| 4 | 13 | $$$n \leq 1000; |s_i|, |t_i| \leq 10$$$ | – |
| 5 | 11 | $$$|s_i| = 1$$$, $$$|t_i| = 1$$$ | – |
| 6 | 11 | Все строки состоят из буквы a | – |
| 7 | 9 | – | 1–6 |
Здесь, $$$\operatorname{sorted}(s_i)$$$ обозначает отсортированную в алфавитном порядке строку $$$s_i$$$. Например, $$$\operatorname{sorted}(\texttt{abacaba}) = \texttt{aaaabbc}$$$.
3no iislop neponinno polis open
10
3eleven plus twotwelve plus one
12
1evillive
3
2a bba ab
-1
2indian catinit canada
-1
4aaaa aaa aa aa aa aaa aaaa
14
7s e a s i d ed i s e a s e
22
Персик — акула в мире программирования — решил составить расписание для всех профилей олимпиады Innopolis Open.
В учебном году $$$D$$$ дней, пронумерованных от $$$1$$$ до $$$D$$$. Всего проводится $$$n$$$ олимпиад.
Олимпиады пронумерованы от $$$1$$$ до $$$n$$$ в порядке неубывания запланированной даты проведения. Каждая олимпиада проводится ровно в один день. Для каждой олимпиады известны её запланированная дата проведения и польза для подрастающего поколения.
Вы можете изменить дату проведения каждой олимпиады, но только на более поздний день того же учебного года (то есть новую дату нельзя сделать меньше исходной и нельзя сделать больше $$$D$$$).
После всех изменений олимпиады должны остаться в порядке неубывания даты проведения.
Польза олимпиадного сезона определяется следующим образом. Для каждого дня рассматриваются все олимпиады, проводящиеся в этот день. Если в день запланирована хотя бы одна олимпиада, то польза дня определяется как максимум значений пользы среди олимпиад, проводящихся в этот день. Если в этот день олимпиад нет, польза дня равна $$$0$$$.
Польза сезона равна сумме пользы всех $$$D$$$ дней.
Во благо школьников определите наибольшую возможную пользу сезона.
В первой строке даны три целых числа $$$n$$$, $$$D$$$ и $$$t$$$ — количество олимпиад и количество дней в учебном году, а также тип ответа ($$$1 \le n \le 3 \cdot 10^5$$$; $$$1 \le D \le 2 \cdot 10^9$$$; $$$1 \le t \le 2$$$).
В $$$i$$$-й из следующих $$$n$$$ строк даны два целых числа $$$d_i$$$ и $$$b_i$$$ — запланированная дата (номер дня) проведения и польза $$$i$$$-й олимпиады ($$$1 \le d_i \le D$$$; $$$1 \le b_i \le 2 \cdot 10^9$$$).
Гарантируется, что $$$d_i \le d_j$$$ для всех $$$i$$$ и $$$j$$$, таких что $$$i \lt j$$$.
Если $$$t = 1$$$, то выведите одно целое число — наибольшую возможную пользу олимпиадного сезона.
Если $$$t = 2$$$, то в первой строке выведите одно целое число — наибольшую возможную пользу олимпиадного сезона; а во второй строке выведите расписание олимпиад — $$$n$$$ целых чисел, $$$i$$$-е из которых является итоговой датой $$$i$$$-й олимпиады. При указанных итоговых датах должна достигаться максимально возможная польза олимпиадного сезона.
Тесты к этой задаче состоят из тринадцати групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов необходимых для неё групп.
| Группа | Баллы | Доп. ограничения | Необходимые группы |
| 1 | 10 | $$$n, D \le 20$$$; $$$b_i \le 20$$$ для всех $$$i$$$; $$$t = 1$$$ | – |
| 2 | 7 | $$$n, D \le 20$$$; $$$b_i \le 20$$$ для всех $$$i$$$ | 1 |
| 3 | 11 | $$$n, D \le 100$$$; $$$b_i \le 100$$$ для всех $$$i$$$ | 1, 2 |
| 4 | 9 | $$$n, D \le 800$$$; $$$b_i \le 800$$$ для всех $$$i$$$ | 1, 2, 3 |
| 5 | 5 | $$$n, D \le 2500$$$; $$$b_i \le 2500$$$ для всех $$$i$$$; $$$t = 1$$$ | 1 |
| 6 | 4 | $$$n, D \le 2500$$$; $$$b_i \le 2500$$$ для всех $$$i$$$ | 1–5 |
| 7 | 5 | $$$b_i = b_j$$$ для всех $$$i$$$, $$$j$$$ | – |
| 8 | 5 | $$$d_i \neq d_j$$$ для всех $$$i$$$ и $$$j$$$, таких что $$$i \neq j$$$ | – |
| 9 | 5 | $$$d_i = 1$$$ для всех $$$i$$$; $$$t = 1$$$ | – |
| 10 | 5 | $$$d_i = d_j$$$ для всех $$$i$$$, $$$j$$$ | 9 |
| 11 | 8 | $$$D \le 2 \cdot 10^6$$$ | 1–6 |
| 12 | 10 | $$$t = 1$$$ | 1, 5, 9 |
| 13 | 16 | – | 1–12 |
3 10 11 31 51 2
10
3 10 21 31 51 2
10 1 2 3
5 6 21 72 65 85 96 4
30 1 3 5 6 6
Заметьте, что ответ для второго теста не подойдёт в качестве ответа для первого, так как при $$$t = 1$$$ нужно выводить только одно число.
Во втором примере в предлагаемом ответе польза первого дня равна $$$3$$$, польза второго — $$$5$$$, третьего — $$$2$$$, а пользы дней с $$$4$$$-го по $$$10$$$-й равны $$$0$$$. Таким образом, польза олимпиадного сезона равна $$$3+5+2+0+\ldots+0=10$$$. Заметьте, что расписание олимпиад $$$[2, 1, 3]$$$ невозможно, так как олимпиады должны остаться в порядке неубывания даты проведения.
В третьем примере также подходит расписание олимпиад $$$[1, 2, 5, 6, 6]$$$, но не подходит $$$[1, 2, 3, 5, 6]$$$, так как третья олимпиада не может проходить раньше $$$5$$$-го дня.
Это интерактивная задача.
Кибер-акула Зубастик$$$^{\dagger}$$$ работает на складе и складывает коробки в одну вертикальную башню. Высота башни не ограничена, но акула может снимать с башни и класть на неё только верхнюю коробку. Также рядом есть буфер — свободная площадка, на которой можно временно держать коробки (в буфере может лежать любое количество коробок).
Коробки нумеруются в порядке прибытия, начиная с $$$1$$$. Для каждой коробки известен момент времени $$$t_j$$$, когда её нужно извлечь со склада.
В процессе работы происходят события двух типов:
Действия. Во время обработки события акула может выполнять следующие операции:
Правила обработки событий.
Ваша задача — для каждого события вывести набор операций, который корректно обработает это событие.
$$$^{\dagger}$$$ см. рис.
Кибер-акула Зубастик В первой строке вводится $$$T$$$ — число моментов времени для рассмотрения.
В $$$i$$$-й из последующих $$$T$$$ строк вводится описание очередного события, происходящего в момент времени $$$i$$$, в следующем формате:
Для очередного события необходимо вывести последовательность операций, которая его обработает.
Сначала целое число $$$K$$$ — число операций.
Затем список из $$$K$$$ операций — для каждой два числа:
Суммарное число выведенных операций по всем событиям не должно превосходить $$$10^6$$$. Если это ограничение нарушено, решение получит вердикт Wrong Answer.
Сначала ваша программа должна считать целое число $$$T$$$ — количество событий.
Затем для каждого $$$i = 1,2,\dots,T$$$ интерактор выводит строку с описанием события, происходящего в момент времени $$$i$$$:
После получения очередного события ваша программа должна вывести ответ для него в следующем формате:
Чтобы получить следующее событие, вы должны вывести корректный ответ для текущего события и завершить строку символом перевода строки.
После вывода ответа обязательно сбросьте буфер вывода:
Обратите внимание, что для более быстрой работы вывода стоит вызывать flush (или endl) после вывода всех $$$K$$$ операций, а не после каждой операции.
Интерактор в этой задаче не адаптивный: в рамках одного теста последовательность событий фиксирована и не меняется в зависимости от ваших ответов.
В этой задаче тесты двух видов.
Тест первого вида — генерируется массив [1, 1, 2, 2, ..., N, N] и случайным образом перемешивается, получается массив $$$[a_1, a_2, \dots, a_T]$$$ размера $$$T$$$, $$$T = 2N$$$. Тогда очередная коробка добавляется в момент времени $$$t_1$$$ и достаётся в момент времени $$$t_2$$$, если $$$t_1 \lt t_2$$$ и $$$a[t_1] = a[t_2]$$$.
Тест второго вида — гарантируется, что коробки достаются в том же порядке, в котором добавляются.
Для каждого значения $$$N$$$ (числа коробок) сгенерировано по одному тесту каждого вида.
| Группа | Тесты | Значения $$$N$$$ | Баллы | Накопленная сумма | Зависимости |
| 1 | 1-2 | Тесты из условия | 0 за тест | 0 | - |
| 2 | 3-10 | 100, 200, 330, 420 | 1 за тест | 8 | - |
| 3 | 11-18 | 480, 720, 820, 1080 | 1 за тест | 16 | 1 |
| 4 | 19-26 | 1240, 1420, 1630, 1870 | 1 за тест | 24 | 1-2 |
| 5 | 27-30 | 2150, 2470 | 1 за тест | 28 | 1-3 |
| 5 | 31-34 | 2840, 3260 | 2 за тест | 36 | 1-3 |
| 6 | 35-42 | 3740, 4300, 4940, 5680 | 2 за тест | 52 | 1-4 |
| 7 | 43-50 | 6530, 7500, 8620, 9910 | 2 за тест | 68 | 1-5 |
| 8 | 51-58 | 11390, 13090, 15050, 17300 | 2 за тест | 84 | 1-6 |
| 9 | 59-66 | 17500, 18000, 18500, 19000 | 2 за тест | 100 | 1-7 |
4+ 3+ 4- 1- 2
1 1 1 3 2 1 1 2 1 1 1 2 1 1 2 2
8+ 8+ 3- 2+ 7+ 6- 4- 3- 1
1 1 1 1 1 2 1 2 2 1 1 3 1 1 4 1 2 4 1 2 3 1 2 1
Слон Филимон решил сьездить к знаменитой подруге панде из Китая города Чэнду с именем Чэн Ши. Чэн Ши очень любит бамбук и показала свою коллекцию бамбуковых надписей. Каждая надпись представляет собой строку из строчных латинских букв.
Коллекция Чэн Ши — это динамическое мультимножество строк. Изначально оно пусто.
Панда может выполнять операции двух типов:
Слону Филимону стало интересно какое наименьшее количество действий потребуется после каждой операции, чтобы все строки в текущем мультимножестве стали одинаковыми.
Разрешённые действия над одной строкой из коллекции:
Строка, к которой приводятся все остальные, может быть любой (в том числе пустой) и не обязана присутствовать в мультимножестве.
Обратите внимание: строки в мультимножестве фактически не изменяются. После каждого запроса требуется лишь вычислить минимальное количество действий, которое потребовалось бы, чтобы сделать все строки одинаковыми. Для последующих операций мультимножество остаётся неизменным.
Помогите Чэн Ши быстро отвечать на вопрос Филимона после каждого изменения.
В первой строке записано одно целое число $$$q$$$ ($$$1 \le q \le 5 \cdot 10^5$$$) — количество операций.
Каждая из следующих $$$q$$$ строк описывает одну операцию и имеет вид:
+ s или - s
где $$$s$$$ — непустая строка, состоящая из строчных латинских букв.
Во всех запросах $$$1 \le |s| \le 5 \cdot 10^5$$$. Суммарная длина всех строк во всех операциях не превышает $$$5 \cdot 10^5$$$.
После каждой операции выведите одно целое число — минимальное количество действий, необходимых для того, чтобы все строки текущего мультимножества стали одинаковыми.
Если после операции мультимножество пусто, выведите $$$0$$$.
| Доп. ограничения | |||||
| Группа | Баллы | $$$q$$$ | $$$\sum |s_i|$$$ | Тип операций | Необходимые подгруппы |
| 1 | 10 | $$$q \le 100$$$ | $$$\sum |s_i| \le 1000$$$ | + и - | – |
| 2 | 10 | $$$q \le 1000$$$ | $$$\sum |s_i| \le 10^4$$$ | + и - | 1 |
| 3 | 15 | $$$q \le 50\,000$$$ | $$$\sum |s_i| \le 10^5$$$ | + и - | 1, 2 |
| 4 | 10 | $$$q \le 5 \cdot 10^5$$$ | $$$\sum |s_i| \le 5 \cdot 10^5$$$, $$$|s_i| \le 10$$$ | + | – |
| 5 | 10 | $$$q \le 5 \cdot 10^5$$$ | $$$\sum |s_i| \le 5 \cdot 10^5$$$, $$$|s_i| \le 10$$$ | + и - | 4 |
| 6 | 20 | $$$q \le 5 \cdot 10^5$$$ | $$$\sum |s_i| \le 5 \cdot 10^5$$$ | + | 4 |
| 7 | 25 | – | – | + и - | 1–6 |
5+ abc+ ab+ a- ab+ b
0 1 2 2 4
Александр и Бабин живут на заброшенном острове. Из развлечений у них есть только деревья, камни и бомбы (не спрашивайте откуда). Им очень скучно, и они хотят сыграть в игру. Александр предложил сыграть в «Сапёр», а Бабин — в «Ним». В качестве компромисса они решили сыграть в Нимсапёр!
Не имея выбора, в качестве игрового поля, ребята выбрали дерево. Напомним, что деревом называется связный неориентированный граф без циклов.
В рамках общей игры Александр начинает играть в подыгру «Сапёр». Изначально, ни одна из вершин дерева не содержит бомб. В свой ход Александр выбирает любую вершину без бомбы и закладывает в неё бомбу. После этого в каждую вершину, не содержащую бомбу, кладётся количество камней, равное числу бомб в соседних с ней вершинах.
Бабин может прервать Александра после любого его хода. Как только это происходит, они начинают играть в «Ним» с получившимися кучками камней, причём Бабин ходит первым.
Если Бабин не прерывает Александра, Александр делает следующий ход (ставит ещё одну бомбу), после чего кучки камней обновляются, и так далее, пока Бабин не начнёт игру в «Ним».
Игрок, который не может сделать ход в «Ним», проигрывает.
Бабин очень хочет выиграть, поэтому он прервёт Александра в самый ранний возможный момент, когда сможет гарантировать свою победу.
Александр, хорошо понимая, что не может выиграть в этой игре, решил вместо этого максимизировать удовольствие, поэтому он хочет заложить как можно больше бомб, прежде чем Бабин начнёт игру в «Ним». Пожалуйста, помогите Александру найти максимальное количество бомб, которое он может заложить!
Напомним, что в игре «Ним» первый игрок выигрывает тогда и только тогда, когда побитовый XOR размеров кучек отличен от нуля.
Напомним, что XOR или Исключающим ИЛИ называется бинарная операция, которая так применяется к каждой паре битов, стоящих на одинаковых позициях в двоичных представлениях чисел, что в результате на этой позиции стоит 0, если биты равны, а иначе — 1. Например, 3 XOR 5 = 6, так как $$$3_{10}$$$ = $$$011_2$$$, $$$5_{10}$$$ = $$$101_2$$$ и потому после применения операции второй и третий бит становятся равными 1, а первый бит — 0, таким образом получается $$$110_2$$$ = $$$6_{10}$$$
В первой строке входных данных содержится одно целое число $$$n$$$ ($$$2 \leq n \leq 369$$$) — количество вершин в дереве.
В последующих $$$n - 1$$$ строках содержатся пары целых чисел $$$a_i, b_i$$$ ($$$1 \le a_i, b_i \le n$$$) — рёбра дерева. Гарантируется, что эти рёбра действительно образуют дерево.
В единственной строке выведите одно число — максимальное количество бомб, которое можно заложить.
| Группа | Баллы | Доп. ограничения | Необходимые группы |
| 1 | 8 | $$$n \le 8$$$ | – |
| 2 | 11 | $$$n \le 18$$$ | 1 |
| 3 | 20 | $$$n \le 45$$$ | 1–2 |
| 4 | 19 | $$$n \leq 128$$$ | 1–3 |
| 5 | 18 | $$$n \leq 243$$$ | 1–4 |
| 6 | 20 | Степени всех вершин $$$\le 3$$$ | – |
| 7 | 4 | – | 1–6 |
31 21 3
2
91 22 33 44 55 66 75 88 9
5
137 67 57 47 37 27 11 122 113 104 95 86 13
8