У Монокарпа есть прямоугольный лист бумаги, который он хочет разделить ровно на $$$n$$$ частей.
Для этого он может производить два типа разрезов:
Каждый из типов разрезов может быть произведен неограниченное количество раз. После очередного разреза никакие получившиеся части листа не перемещаются и не убираются, каждый новый разрез проходит через весь лист.
Перед вами стоит задача определить минимальное суммарное количество горизонтальных и вертикальных разрезов, которые должен сделать Монокарп, чтобы разделить лист на ровно $$$n$$$ частей.
В первой строке следует целое число $$$n$$$ ($$$2 \le n \le 1\,000\,000$$$) — количество частей, которые должны получиться.
Выведите минимальное суммарное количество горизонтальных и вертикальных разрезов, которые должен сделать Монокарп, чтобы разделить лист на ровно $$$n$$$ частей.
8
4
3
2
100
18
В первом примере Монокарп может, например, сделать три горизонтальных разреза и один вертикальный разрез. После этого лист будет разделен на $$$8$$$ частей суммарно за четыре разреза.
Во втором примере Монокарп может, например, сделать два вертикальных разреза. После этого лист будет разделен на $$$3$$$ части за два разреза.
В третьем примере Монокарп должен сделать девять вертикальных разрезов и девять горизонтальных разрезов. После этого лист будет разделен на $$$100$$$ частей суммарно за $$$18$$$ разрезов.
Рассмотрим два экрана, которые могут отображать последовательности заглавных латинских букв. Изначально оба экрана ничего не отображают.
За одну секунду вы можете выполнить одно из следующих двух действий:
Вам нужно вычислить минимальное количество секунд, которое вам нужно потратить, чтобы первый экран отображал последовательность $$$s$$$, а второй экран отображал последовательность $$$t$$$.
Первая строка содержит последовательность $$$s$$$, а вторая строка содержит последовательность $$$t$$$ ($$$1 \le |s|, |t| \le 100$$$). Обе последовательности состоят из заглавных латинских букв.
Выведите одно целое число — минимально возможное количество секунд, которое вам нужно потратить, чтобы первый экран отображал последовательность $$$s$$$, а второй экран отображал последовательность $$$t$$$.
GARAGEGARAGEFORSALE
14
ABCDEAABCD
10
В первом примере возможна следующая последовательность действий:
Во втором примере возможна следующая последовательность действий:
У Монокарпа есть шарики, покрашенные в красный, желтый и зеленый цвета, причем среди них ровно $$$a$$$ шариков красного цвета, ровно $$$b$$$ шариков желтого цвета и ровно $$$c$$$ шариков зеленого цвета.
Монокарп может производить с шариками следующую операцию неограниченное количество раз:
Перед вами стоит задача определить минимальное количество операций, которые необходимы, чтобы количество различных цветов, в которые покрашены шарики, стало равно двум, причем количество шариков каждого из двух цветов должно быть одинаковым.
Добавлять или удалять шарики запрещено.
В первой строке следует целое число $$$a$$$ ($$$1 \le a \le 1\,000\,000$$$) — количество шариков красного цвета.
Во второй строке следует целое число $$$b$$$ ($$$1 \le b \le 1\,000\,000$$$) — количество шариков желтого цвета.
В третьей строке следует целое число $$$c$$$ ($$$1 \le c \le 1\,000\,000$$$) — количество шариков зеленого цвета.
Выведите минимальное количество операций, которые должен выполнить Монокарп, чтобы количество различных цветов, в которые покрашены шарики, стало равно двум, причем количество шариков каждого из двух цветов должно быть одинаковым.
Если это невозможно, выведите $$$-1$$$.
231
1
254
-1
101010
10
В первом примере нужно перекрасить единственный зеленый шарик в красный цвет. Тогда каждый шарик будет либо красным, либо желтым, причем будет три красных шарика и три желтых шарика.
Во втором примере невозможно перекрасить шарики таким образом, чтобы шариков каждого из двух цветов было одинаковое количество, поэтому нужно вывести $$$-1$$$.
У Монокарпа есть массив, состоящий из $$$n$$$ целых чисел, причем $$$n$$$ является четным числом.
Монокарп должен выполнить в своем массиве ровно один обмен по следующим правилам: выбрать позицию $$$x$$$ в левой половине массива ($$$1 \le x \le \frac{n}{2}$$$), выбрать позицию $$$y$$$ в правой половине массива ($$$\frac{n}{2} + 1 \le y \le n$$$) и поменять местами элементы в позициях $$$x$$$ и $$$y$$$.
Перед вами стоит задача определить, может ли Монокарп выполнить ровно один описанный обмен таким образом, чтобы сумма всех элементов в левой половине массива стала равна сумме всех элементов в правой половине массива.
В первой строке следует целое четное число $$$n$$$ ($$$2 \le n \le 200\,000$$$) — количество элементов в массиве.
В следующей строке следует последовательность целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10\,000$$$), где $$$a_i$$$ равно $$$i$$$-му элементу массива.
Если невозможно выполнить ровно один описанный в условии обмен, выведите «NO» (без кавычек).
В противном случае в первую строку выведите «YES» (без кавычек). Во вторую строку выведите два целых числа — позицию для обмена из левой половины массива и позицию для обмена из правой половины массива. Если ответов несколько, разрешается вывести любой из них.
64 1 2 6 7 6
YES 2 5
45 4 3 5
NO
В первом примере Монокарп должен поменять местами второй и пятый элементы. Тогда массив станет равным $$$[4, 7, 2, 6, 1, 6]$$$. Сумма левой половины будет равна $$$4 + 7 + 2 = 13$$$, а сумма правой половины будет равна $$$6 + 1 + 6 = 13$$$. Таким образом, суммы левой и правой половин массива станут равными.
Во втором примере невозможно выполнить обмен так, чтобы суммы левой и правой половин массива стали равными.
Недавно акшиМ столкнулся с задачей, для решения которой нужны были биномиальные коэффициенты. Он написал код, который выглядел так:
for (int n = 0; n < N; n++) { // цикл по n от 0 до N-1 включительно
C[n][0] = 1;
C[n][n] = 1;
for (int k = 1; k < n; k++) // цикл по k от 1 до n-1 включительно
C[n][k] = C[n][k - 1] + C[n - 1][k - 1];
}
К сожалению, он допустил ошибку, так как правильная формула следующая:
C[n][k] = C[n - 1][k] + C[n - 1][k - 1];
Но его сокомандник, кеблидА, заинтересовался значениями, которые были получены использованием неправильной формулы. Пожалуйста, помогите ему вычислить эти коэффициенты для $$$t$$$ различных пар $$$(n_i, k_i)$$$. Обратите внимание: их необходимо вычислить в соответствии с первой (неправильной) формулой.
Поскольку значения $$$C[n_i][k_i]$$$ могут быть слишком большими, выводите их по модулю $$$10^9 + 7$$$.
В первой строке задано одно целое число $$$t$$$ ($$$1 \le t \le 10^5$$$) — количество пар. Далее в двух строках заданы сами $$$t$$$ пар.
Во второй строке заданы $$$t$$$ целых чисел $$$n_1, n_2, \dots, n_t$$$ ($$$2 \le n_i \le 10^5$$$).
В третьей строке заданы $$$t$$$ целых чисел $$$k_1, k_2, \dots, k_t$$$ ($$$1 \le k_i \lt n_i$$$).
Выведите $$$t$$$ целых чисел $$$C[n_i][k_i]$$$ по модулю $$$10^9 + 7$$$.
32 5 51 2 3
2 4 8
4100000 100000 100000 1000001 33333 66666 99999
2 326186014 984426998 303861760
Монокарп решил сыграть в новую игру. Для игры используется колода из $$$n$$$ карточек, причем на $$$i$$$-й карточке записано ровно одно целое число $$$a_i$$$.
В начале игры на первом ходе Монокарп может взять себе любую карточку из колоды. В процессе каждого следующего хода Монокарп может взять себе ровно одну карточку, на которой записано либо такое же число, которое было записано на карточке, взятой на предыдущем ходе, либо число на единицу большее, чем число, которое было записано на карточке, взятой на предыдущем ходе.
Иными словами, если на предыдущем ходе Монокарп взял себе карточку, на которой записано число $$$x$$$, то на текущем ходе он может взять себе либо карточку, на которой записано число $$$x$$$, либо карточку, на которой записано число $$$x + 1$$$.
После того как Монокарп взял себе карточку на очередном ходе, она удаляется из колоды.
По правилам игры количество различных чисел, записанных на карточках, которые Монокарп забрал себе, не должно превышать $$$k$$$.
Если после очередного хода Монокарп не может взять карточку, не нарушая описанных правил, игра заканчивается.
Перед вами стоит задача определить максимальное количество карточек, которые Монокарп может забрать себе из колоды в процессе игры, если на первом ходе он может взять любую карточку из колоды.
В первой строке следуют два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le k \le n \le 200\,000$$$) — количество карточек в колоде и максимальное количество различных чисел, которые могут быть записаны на карточках, которые Монокарп забирает себе.
Во второй строке следует последовательность целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^{9}$$$), где $$$a_i$$$ равно числу, которое записано на $$$i$$$-й карточке.
Выведите максимальное количество карточек, которые Монокарп может забрать себе из колоды в процессе игры, если на первом ходе он может взять любую карточку из колоды.
10 25 2 4 3 4 3 4 5 3 2
6
5 110 11 10 11 10
3
9 34 5 4 4 6 5 4 4 6
9
В первом примере Монокарпу нужно взять себе любую из карточек, на которых записано число $$$3$$$. В процессе двух следующих ходов ему нужно взять себе две оставшиеся в колоде карточки, на которых записано число $$$3$$$. В процессе трех следующих ходов ему нужно взять себе три карточки, на которых записано число $$$4$$$. После этого Монокарп не сможет взять ни одной карточки из колоды, при этом у него будет $$$6$$$ карточек.
Монокарп живет в городе, который мы будем считать отрезком координатной прямой. Самая левая точка города расположена в точке $$$0$$$, а самая правая — в точке $$$10^{9}$$$.
В городе есть $$$n$$$ магазинов, расположенных в точках с целочисленными координатами, причем $$$i$$$-й магазин расположен в точке $$$a_i$$$. Гарантируется, что среди $$$n$$$ магазинов есть ровно один магазин в точке $$$0$$$ и ровно один магазин в точке $$$10^{9}$$$, а также гарантируется, что в каждой точке с целочисленными координатами есть не более одного магазина.
Правительство решило построить в городе еще $$$m$$$ магазинов. Строить новый магазин в точке, в которой уже был магазин, запрещено, а также в каждой целочисленной точке может быть построено не более одного нового магазина. Также запрещается строить магазины левее точки $$$0$$$ и правее точки $$$10^{9}$$$.
Перед вами стоит задача выбрать, где построить новые $$$m$$$ магазинов таким образом, чтобы среди всех $$$(n+m-1)$$$ пар соседних магазинов максимальное расстояние между магазинами из пары было минимально возможно. Иными словами, мы хотим минимизировать максимальную длину отрезка между двумя соседними магазинами.
В первой строке следуют два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 200\,000$$$, $$$1 \le m \le 200\,000$$$) — количество магазинов, которые построены в городе, и количество новых магазинов, которые нужно построить.
Во второй строке следует последовательность различных целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i \le 10^{9}$$$), где $$$a_i$$$ равно координате $$$i$$$-го уже построенного магазина.
Дополнительное ограничение на входные данные:
Выведите одно целое число — минимально возможное максимальное расстояние между двумя соседними магазинами.
4 1750000000 250000000 0 1000000000
250000000
2 20 1000000000
333333334
3 17500000000 0 1000000000
55555556
4 2000333333333 0 777777777 1000000000
499376
В первом примере нужно построить новый магазин в точке $$$500\,000\,000$$$. Тогда расстояние между всеми парами соседних магазинов будет равно $$$250\,000\,000$$$.
Во втором примере можно построить два новых магазина в точках $$$333\,333\,333$$$ и $$$666\,666\,666$$$. Тогда магазины будут расположены в точках $$$[0, 333\,333\,333, 666\,666\,666, 1\,000\,000\,000]$$$, а максимальное расстояние между парой соседних будет равно $$$1\,000\,000\,000 - 666\,666\,666 = 333\,333\,334$$$ (между третьим и четвертым магазинами).
Введем понятие красоты строки. Рассмотрим длины всех максимальных по включению блоков, состоящих из одинаковых букв. Тогда красота строки — это сумма квадратов длин всех таких блоков.
Например, пусть строка равна «aabbbcaaadddd». В этой строке следующие блоки одинаковых букв: блок из двух букв «a», блок из трех букв «b», блок из одной буквы «c», блок из трех букв «a» и блок из четырех букв «d». Таким образом, красота этой строки равна $$$2^2 + 3^2 + 1^2 + 3^2 + 4^2 = 4 + 9 + 1 + 9 + 16 = 39$$$.
У Монокарпа есть строка $$$s$$$, состоящая из $$$n$$$ букв латинского алфавита. Он ровно один раз выберет пару соседних различных букв в строке $$$s$$$ и поменяет их местами.
Перед вами стоит задача определить максимальную красоту новой строки Монокарпа, которую он может получить после ровно одного обмена соседних различных букв в своей строке $$$s$$$.
В первой строке следует целое число $$$n$$$ ($$$2 \le n \le 200\,000$$$) — длина строки $$$s$$$.
Во второй строке следует строка $$$s$$$ длины $$$n$$$, состоящая из строчных букв латинского алфавита.
Дополнительное ограничение на входные данные:
Выведите максимальную красоту новой строки, которую Монокарп может получить после ровно одного обмена соседних различных букв в своей строке $$$s$$$.
11aabaacaabaa
21
5wwwwz
11
В первом примере можно, например, поменять местами третью и четвертую буквы. Тогда Монокарп получит строку «aaabacaabaa». Красота этой строки равна $$$3^2 + 1^2 + 1^2 + 1^2 + 2^2 + 1^2 + 2^2 = 9 + 1 + 1 + 1 + 4 + 1 + 4 = 21$$$.
Во втором примере нужно поменять местами четвертую и пятую буквы. Тогда Монокарп получит строку «wwwzw». Красота этой строки равна $$$3^2 + 1^2 + 1^2 = 9 + 1 + 1 = 11$$$.
Представьте себе игру, в которой вы играете за персонажа с двумя характеристиками: «Сила» и «Интеллект», которые изначально находятся на нулевом уровне.
В ходе игры вы получите $$$m$$$ очков характеристик, которые позволят вам поднять их уровни — одно очко увеличивает одну из характеристик на один уровень. Но в процессе игры вы также сталкиваетесь с так называемыми «Проверками характеристик»: если ваша соответствующая характеристика достаточно высока, вы пройдете проверку; в противном случае вы провалите проверку.
Потратив некоторое время, вы наконец подготовили список, который содержит записи обо всех очках, которые вы получили, и всех проверках, с которыми столкнулись. И теперь вы задаетесь вопросом: каково максимальное количество проверок характеристик, которые вы можете пройти за одну игру, если будете разумно тратить очки?
Обратите внимание, что вы не можете изменить порядок записей.
В первой строке заданы два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le m \le 5000$$$; $$$m \lt n \le 2 \cdot 10^6$$$) — количество записей в списке и общее количество очков, которые вы получите в ходе игры.
Во второй строке заданы $$$n$$$ целых чисел $$$r_1, r_2, \dots, r_n$$$ ($$$-m \le r_i \le m$$$), где $$$r_i$$$ кодирует $$$i$$$-ю запись:
Каково максимальное количество проверок, которые вы можете пройти, если не можете изменить порядок записей.
10 50 1 0 2 0 -3 0 -4 0 -5
3
3 11 -1 0
0
9 30 0 1 0 2 -3 -2 -2 1
4
В самой популярной карточной игре в Берляндии используется колода из $$$n \times m$$$ карт. У каждой карты есть два параметра: масть и ранг. Масти в игре пронумерованы от $$$1$$$ до $$$n$$$, а ранги пронумерованы от $$$1$$$ до $$$m$$$. Для каждой комбинации масти и ранга существует ровно одна карта в колоде.
Карта с мастью $$$a$$$ и рангом $$$b$$$ может побить карту с мастью $$$c$$$ и рангом $$$d$$$ в одном из двух случаев:
В игру играют два игрока. Перед началом игры они получают ровно по половине колоды. Первый игрок выигрывает, если для каждой карты второго игрока он может выбрать свою карту, которая ее может побить, и при этом не будет выбирать свои карты повторно (то есть существует такое разбиение на пары карт первого игрока с картами второго игрока так, чтобы в каждой паре карта первого игрока била карту второго игрока). Иначе выигрывает второй игрок.
Ваша задача — посчитать количество способов распределить карты так, чтобы выиграл первый игрок. Два способа считаются различными, если существует такая карта, что в одном она принадлежит первому игроку, а в другом — второму. Количество способов может быть очень большим, поэтому выведите его по модулю $$$998244353$$$.
Единственная строка содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n, m \le 500$$$).
Дополнительное ограничение на входные данные: $$$m$$$ четно.
Выведите единственное целое число — количество способов распределить карты так, чтобы выиграл первый игрок, взятое по модулю $$$998244353$$$.
1 4
2
2 2
2
3 6
1690
5 4
568
500 500
84693741
Дан массив $$$a$$$, состоящий из $$$n$$$ целых чисел (нумеруемых от $$$1$$$ до $$$n$$$). Изначально все они равны нулю.
Необходимо обработать $$$q$$$ запросов $$$i$$$-й запрос состоит из двух различных целых чисел $$$x_i$$$ и $$$y_i$$$. В ходе $$$i$$$-го запроса нужно выбрать целое число $$$p$$$ (которое равно либо $$$x_i$$$, либо $$$y_i$$$) и целое число $$$d$$$ (которое равно либо $$$1$$$, либо $$$-1$$$), и присвоить $$$a_p = a_p + d$$$.
После каждого запроса каждый элемент массива $$$a$$$ должен быть неотрицательным целым числом.
Необходимо обработать все запросы таким образом, чтобы сумма всех элементов массива $$$a$$$ после последнего запроса была минимально возможной.
Первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$2 \le n \le 3 \cdot 10^5$$$; $$$1 \le q \le 3 \cdot 10^5$$$) — количество элементов в массиве $$$a$$$ и количество запросов соответственно.
Затем следуют $$$q$$$ строк. $$$i$$$-я из этих строк содержит два целых числа $$$x_i$$$ и $$$y_i$$$ ($$$1 \le x_i, y_i \le n$$$; $$$x_i \ne y_i$$$) — описание $$$i$$$-го запроса.
Для каждого запроса выведите строку, содержащую два символа:
Если существует несколько ответов, выведите любой из них.
3 41 23 23 11 2
y+ x+ x- y-
4 41 22 33 43 2
y+ y+ x- y-
4 22 14 3
y+ x+
Монокарп собирает армию в компьютерной игре, чтобы сразиться с драконом.
Армия состоит из двух частей: героев и защитных артефактов. У каждого героя один параметр — его здоровье. У каждого защитного артефакта тоже один параметр — его прочность.
Перед началом боя Монокарп раздает артефакты героям так, чтобы каждый герой получил не более одного артефакта.
Бой состоит из раундов, которые проходят следующим образом:
Бой заканчивается, если в живых не осталось ни одного героя.
Изначально армия пуста. Приходит $$$q$$$ запросов: добавить в армию героя со здоровьем $$$x$$$ или артефакт с прочностью $$$y$$$. После каждого запроса найдите максимальное количество раундов, которые Монокарп может продержаться, если оптимально распределит артефакты.
В первой строке записано одно целое число $$$q$$$ ($$$1 \le q \le 3 \cdot 10^5$$$) — количество запросов.
В $$$i$$$-й из следующих $$$q$$$ строк записаны два целых числа $$$t_i$$$ и $$$v_i$$$ ($$$t_i \in \{1, 2\}$$$; $$$1 \le v_i \le 10^9$$$) — тип запроса и величина параметра запроса. Если тип $$$1$$$, то добавляется один герой со здоровьем $$$v_i$$$. Если тип $$$2$$$, то добавляется артефакт с прочностью $$$v_i$$$.
Выведите $$$q$$$ целых чисел. После каждого запроса выведите максимальное количество раундов, которые Монокарп может продержаться, если оптимально распределит артефакты.
32 51 41 10
0 8 19
101 91 62 41 81 32 101 31 61 102 6
9 15 19 27 30 39 42 48 59 65
Рассмотрим первый пример.