Иногда дедлайн подкрадывается незаметно, и, чтобы успеть закончить задачу вовремя, приходится работать целую ночь. Чтобы поддерживать себя в бодрствующем состоянии, проще всего выпить кофе.
Программист Лев из VK обычно справляется со всеми поставленными задачами заранее, но в этот раз слишком долго откладывал последнее дело, и планирует закончить его этой ночью. Чтобы оставаться бодрым, ему необходимо минимум $$$x$$$ кофеина. Для этого он собирается собрать комплект из кофейных снеков, всегда доступных в офисе.
Всего доступно $$$n$$$ снеков, $$$i$$$-й из которых присутствует в наличии в массе $$$m_i$$$ и с долей содержания кофеина $$$k_i \%$$$. При этом $$$i$$$-й из снеков имеет тип (напиток, печенье, шоколадный батончик, и т. д.), характеризующийся целым числом $$$t_i$$$.
Смешивать снеки разных типов плохо, поэтому Лев хочет обойтись как можно меньшим количеством разных типов снеков. Помогите ему выбрать такой набор снеков, суммарная масса кофеина в котором хотя бы $$$x$$$, а количество различных типов снеком минимально.
В первой строке ввода через пробел даны три целых числа $$$n$$$, $$$q$$$ и $$$x$$$ — число разных снеков, количество типов снеков и необходимая масса кофеина, соответственно ($$$1 \le q \le n \le 2 \cdot 10^5$$$; $$$1 \le x \le 10^9$$$).
В $$$i$$$-й из следующих строк через пробел даны три целых числа $$$t_i$$$, $$$m_i$$$ и $$$k_i$$$ — тип, суммарная масса и процентное содержание кофеина $$$i$$$-го снека ($$$1 \le t_i \le q$$$; $$$1 \le m_i \le 10^9$$$; $$$0 \le k_i \le 100$$$).
В единственной строке выведите одно целое число — минимальное необходимое число типов снеков, необходимое, чтобы набрать $$$x$$$ кофеина. Если получить $$$x$$$ кофеина, даже взяв все снеки, невозможно, выведите «-1» (без кавычек).
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
| Подзадача | Баллы | Ограничения | Необходимые подзадачи |
| 0 | – | примеры из условия | |
| 1 | 12 | $$$q = 1$$$ | |
| 2 | 16 | $$$k_i = 100$$$, $$$t_i \ne t_j$$$, $$$m_i = m_j$$$ для всех $$$i$$$, $$$j$$$ | |
| 3 | 18 | $$$t_i \ne t_j$$$, $$$k_i = k_j$$$ для всех $$$i$$$, $$$j$$$ | 2 |
| 4 | 17 | $$$t_i \ne t_j$$$ для всех $$$i$$$, $$$j$$$ | 2, 3 |
| 5 | 17 | $$$k_i = k_j$$$ для всех $$$i, j$$$ | 2, 3 |
| 6 | 20 | нет | 0 – 5 |
4 3 101 4 252 5 1002 4 1003 1 10
2
5 4 31 4 501 5 202 2 502 2 254 2 100
1
Вам дана десятичная дробь, то есть число, содержащее целую часть и дробную часть, в котором обе части записаны в десятичной системе счисления. К сожалению, в ней может быть период, а работать с дробями с периодами не очень удобно.
Дробь с периодом записывается в формате $$$a.b(c)$$$, что соответствует $$$a.bccc\ldots$$$, где $$$c$$$ повторяется бесконечное число раз. Например, $$$1.25(13)$$$ задает число $$$$$$1 + \tfrac{2}{10} + \tfrac{5}{10^2} + \tfrac{1}{10^3} + \tfrac{3}{10^4} + \tfrac{1}{10^5} + \tfrac{3}{10^6} + \ldots$$$$$$
Найдите минимальное положительное основание системы счисления, в которой то же самое число задается непериодичной дробью.
Число представляется в виде непериодичной дроби в системе счисления с основанием $$$c$$$, если оно представимо в виде конечной суммы $$$\sum\limits_{i} \frac{a_i}{c^i}$$$. В частности, мы считаем, что для целого числа ответом на задачу будет $$$c = 1$$$.
В первой строке ввода через пробел перечислены три целых числа $$$n$$$, $$$m$$$ и $$$k$$$ — количество цифр в целой части, непериодичной дробной части и в периоде, соответственно ($$$1 \le n \le 12$$$; $$$0 \le m, k \le 12$$$).
Во второй, третьей и четвертой строках даны целые числа $$$a$$$, $$$b$$$ и $$$c$$$ — целая часть, дробная часть и период числа, соответственно ($$$0 \le a, b, c \le 10^{12}$$$).
Обратите внимание, что запись каждой из частей может быть как пустой строкой, так и числом с ведущими нулями, так как количество занимаемых позиций в числе имеет значение ($$$1.01 \neq 1.1$$$).
Выведите единственное целое число — минимальное основание системы счисления, в которой данное число записывается без периода. Выведите ответ по модулю $$$10^9 + 7$$$.
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
| Подзадача | Баллы | Ограничения | Необходимые подзадачи |
| 0 | – | примеры из условия | |
| 1 | 10 | $$$m = 0$$$, $$$k \le 1$$$ | |
| 2 | 10 | $$$m \le 1$$$, $$$k \le 1$$$ | 1 |
| 3 | 14 | $$$m \le 6$$$, $$$k = 0$$$ | |
| 4 | 16 | $$$m = 0$$$, $$$k \le 6$$$ | 1 |
| 5 | 23 | $$$m + k \le 12$$$ | 0 – 4 |
| 6 | 27 | $$$m, k \le 12$$$ | 0 – 5 |
2 1 0101
10
1 2 10250
2
1 0 115
3
В C++ для считывания строки до конца можно использовать std::getline.
Проект нового города предполагает застройку в виде решетки размером $$$n \times m$$$ клеток. На пересечении $$$i$$$-й строки и $$$j$$$-го столбца будет располагаться дом на $$$t_{i,j}$$$ жильцов.
Три дома в клетках $$$(i, j)$$$, $$$(i + a, j)$$$ и $$$(i, j + b)$$$ образуют хороший треугольник, подходящий для линии общественного транспорта, если:
Вы можете изменить план застройки, увеличив или уменьшив все $$$t_{i,j}$$$ на одно и то же целое число $$$d$$$. Если $$$t_{i,j}$$$ при этом должно опуститься ниже нуля, считайте его равным нулю. Обозначим за $$$T + d$$$ матрицу значений $$$t_{i,j} + d$$$, а за $$$\triangle(T + d)$$$ — количество хороших треугольников при застройке города соответствующим образом.
Найдите $$$$$$\sum\limits_{d=-\infty}^{+\infty} \triangle(T + d) \text{,}$$$$$$ или, иными словами — суммарное количество хороших треугольников по всем возможным планам застройки.
В первой строке ввода через пробел даны два целых числа $$$n$$$ и $$$m$$$ — количество строк и столбцов решетки, соответственно ($$$1 \le n, m \le 1000$$$).
В $$$i$$$-й из следующих $$$n$$$ строк перечислены $$$m$$$ целых чисел $$$t_{i,j}$$$ — количество этажей в каждом доме $$$i$$$-й строки решетки ($$$1 \le t_{i,j} \le 10^9$$$).
Выведите единственное целое число — количество троек клеток, удовлетворяющих поставленным условиям.
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
| Подзадача | Баллы | Ограничения | Необходимые подзадачи |
| 0 | – | примеры из условия | |
| 1 | 8 | $$$t_{i,j} \le 2$$$ для всех $$$i$$$, $$$j$$$ | |
| 2 | 13 | $$$n \le 2$$$ | |
| 3 | 17 | $$$n, m \le 50$$$, $$$t_{i,j} \le 50$$$ | 0 |
| 4 | 17 | $$$n, m \le 500$$$ | 0, 3 |
| 5 | 20 | $$$t_{i,j}$$$ сгенерированы случайно и равномерно | 0 |
| 6 | 25 | нет | 0 – 5 |
3 33 1 11 2 11 1 1
2
2 45 4 3 24 3 2 1
6
В этой задаче большой размер входных данных, поэтому может быть полезно использовать ускоренный ввод и вывод.
В современном мире есть множество различных баз данных, основанных на разных структурах и принципах. В дополнение к реляционным (например, MySQL) и графовым (например, GraphQL), недавно стажер компании VK предложил идею новой базы данных DequeQL, основанной на деках. Разумеется, не все идеи стажеров действительно хорошие, но, будучи ответственным ментором, Лев решил реализовать его идею и проверить ее эффективность.
Дек — структура данных, хранящая последовательность элементов, и позволяющая добавлять новый элемент или вынимать элемент с любого из двух концов последовательности. Базовым блоком данных в DequeQL является юнит (unit) — пустой дек, соответствующий минимальной единице информации. Сама база данных представляет из себя множество пронумерованных деков, вложенных друг в друга. Дек, не вложенный ни в какой другой, называется корнем. Разумеется, если некоторый юнит не лежит в другом деке, он тоже считается корнем.
DequeQL поддерживает четыре операции на изменение:
Обратите внимание, что операции можно производить только над корневыми элементами базы данных. Лев уже реализовал эти операции, и решил, что DequeQL может быть полезна в одном из новых проектов VK, если расширить ее функционал и добавить поддержку ответов на запрос pop_complexity($$$d$$$) — какое минимальное количество операций pop_back или pop_front надо выполнить, чтобы $$$d$$$ стал корнем? Сама структура базы данных при этом не меняется, то есть выполнять соответствующие действия pop не надо.
Пока у Льва выходной, у вас есть возможность зарекомендовать себя в качестве квалифицированного разработчика. Вам дана база данных, состоящая из $$$n$$$ юнитов с номерами от $$$1$$$ до $$$n$$$. Реализуйте требуемый функционал и выведите ответ на каждый запрос.
В первой строке ввода даны два целых числа $$$n$$$ и $$$m$$$ — количество юнитов в базе данных и количество запросов ($$$1 \le n, m \le 2 \cdot 10^5$$$).
В $$$i$$$-й из следующих строк дан $$$i$$$-й запрос в формате «<command> $$$d$$$» или «<command> $$$d_1$$$ $$$d_2$$$», где <command> — команда или запрос, описанные в условии ($$$1 \le d, d_1, d_2 \le n$$$). Гарантируется, что операции изменения базы данных производятся только над корневыми вершинами, и что операции pop производятся только с непустыми деками.
Для каждого запроса информации выведите в отдельной строке ответ на этот запрос — минимальное количество операций pop, необходимое, чтобы сделать соответствующий элемент корнем.
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
| Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
| 0 | – | примеры из условия | полная | |
| 1 | 8 | $$$n, m \le 10$$$ | 0 | полная |
| 2 | 9 | каждый дек напрямую содержит не более двух элементов | первая ошибка | |
| 3 | 13 | каждый дек напрямую содержит не более трех элементов | 2 | первая ошибка |
| 4 | 12 | $$$n, m \le 2000$$$ | 0, 1 | первая ошибка |
| 5 | 20 | все pop_complexity идут после операций изменения | первая ошибка | |
| 6 | 14 | нет операций pop | первая ошибка | |
| 7 | 24 | нет | 0 – 6 | первая ошибка |
6 11push_back 2 1push_front 3 1pop_back 1push_back 4 2push_front 6 5push_front 2 1push_back 5 1pop_complexity 3pop_complexity 4pop_complexity 5pop_complexity 6
2 2 1 2