Рудольф собирает компьютерный класс. У него есть в наличии $$$N$$$ системных блоков и $$$M$$$ комплектующих (мониторов, клавиатур, мышек, колонок). У $$$i$$$-го системного блока есть $$$K_{i}$$$ портов определенных типов. К каждому порту можно подсоединить неограниченное количество устройств, если устройство имеет соответствующий тип подключения. Комплектующие могут быть одного из четырех видов (монитор, клавиатура, мышь, колонки) и имеют один тип подключения, то есть могут подключаться только к системным блокам, имеющим порт этого типа. Устройства, подключенные к одному системному блоку, не могут быть при этом подключены к другому системному блоку.
Рудольф хочет собрать наибольшее количество рабочих компьютеров. Рабочим компьютером считается системный блок, к которому подключено хотя бы одно устройство каждого вида. Помогите Рудольфу узнать, какое максимальное количество компьютеров можно собрать, и выведите номера полностью укомплектованных системных блоков.
Первая строка содержит целое число $$$N$$$ $$$(1 \leq N \leq 12)$$$ — количество системных блоков.
В следующих $$$N$$$ строках входных данных описываются системные блоки, каждый в отдельной строке. Первое число описания $$$K_{i}$$$ $$$(1 \leq K_{i} \leq 50)$$$ — количество портов $$$i$$$-го системного блока. Затем идут $$$K_{i}$$$ целых чисел $$$P_{j}$$$ $$$(1 \leq P_{j} \leq 50)$$$ — тип $$$j$$$-го подключения порта.
Следующая строка содержит целое число $$$M$$$ $$$(1 \leq M \leq 1000)$$$ — количество комплектующих.
В следующих $$$M$$$ строках входных данных описываются комплектующие, каждое в отдельной строке. Описание содержит два целых числа $$$A_{v}$$$, $$$B_{v}$$$ $$$(1 \leq A_{v} \leq 4, 1 \leq B_{v} \leq 50)$$$. Число $$$A_{v}$$$ — вид $$$v$$$-го комплектующего: $$$1$$$ — монитор, $$$2$$$ — клавиатура, $$$3$$$ — мышь, $$$4$$$ — колонки. Число $$$B_{v}$$$ — тип подключения.
Выведите целое число $$$X$$$ — максимальное количество компьютеров, которые можно укомплектовать. В следующей строке выведите через пробел $$$X$$$ целых чисел — номера системных блоков.
Если наборов системных блоков, позволяющих получить максимальное количество укомплектованных компьютеров, несколько, выведите описание любого из таких наборов.
3 2 1 2 2 2 3 1 4 9 1 1 1 2 1 4 2 2 2 4 3 4 4 1 3 2 4 4
2 1 3
Рудольф недавно скачал на свой смартфон новую игру. Суть ее довольно проста. Вы начинаете с армии размером в одного солдата. Армия бежит по прямой через череду союзных и вражеских блокпостов. Каждый союзный блокпост представляет собой некоторое количество дверей, за которыми расположено некоторое количество союзников. Вам нужно выбрать дверь, через которую пробежать. При этом все союзники за этой дверью присоединяются к вашей армии и бегут дальше с вами. Каждый вражеский блокпост представляет собой некоторое количество дверей, за которыми расположено некоторое количество вражеских солдат. Вам также нужно выбрать дверь, через которую пробежать. При этом силы ваших и вражеских солдат примерно равны, поэтому при преодолении вражеского блокпоста один вражеский солдат убьет одного солдата вашей армии. Оставшиеся солдаты вашей армии, если таковые имеются, побегут дальше. В противном случае игра завершается.
В конце игры вашу армию ждет штурм вражеской крепости. Для выполнения этого задания вам необходимо выстроить пирамиду из солдат вашей армии. Пирамида строится по следующему принципу. На вершине пирамиды находится некоторое количество солдат $$$P (P \ge 1)$$$. Уровнем ниже может стоять ровно на $$$X (X \ge 1)$$$ cолдата больше. Пирамида строится до тех пор, пока в армии есть солдаты. При этом значения $$$P$$$ и $$$X$$$ выбираются так, чтобы все солдаты армии были задействованы.
Если пирамида будет достаточно высокой, то хотя бы один солдат вашей армии сможет преодолеть стену вражеской крепости и открыть ворота для всей армии.
Рудольф знает конфигурацию текущего уровня игры и просит вас определить максимальную высоту пирамиды, которую можно будет построить в конце уровня.
Первая строка содержит целое число $$$N$$$ ($$$1 \le N \le 20$$$) — количество блокпостов текущего уровня игры.
Далее следует $$$N$$$ строк — описания блокпостов.
Каждая строка описания содержит цифру $$$1$$$, если это описание блокпоста союзников, и $$$2$$$, если это описание вражеского блокпоста. Далее следует целое число $$$M_i$$$ ($$$1 \le M_i \le 100$$$) — количество дверей $$$i$$$-го блокпоста. Далее в той же строке следует $$$M_i$$$ целых чисел $$$A_j$$$ ($$$0 \le A_j \le 2500$$$) — количество солдат за $$$j$$$-й дверью.
Выведите единственное целое число — максимальную высоту пирамиды, которую сможет построить Рудольф.
5 1 3 10 1 20 2 2 5 0 2 2 10 10 1 2 0 5 1 2 0 0
4
5 1 3 10 1 20 2 2 30 40 2 2 10 10 1 2 0 5 1 2 0 0
0
Одним весенним вечером Рудольф сидел и размышлял о том, кто он такой. Внезапно он понял, что он персонаж задач олимпиады «IQ ПФО».
Придя в себя спустя некоторое время Рудольф решил, что в таком случае не мешало бы украсить его комнату словами «IQ». Для этого он вырезал из бумаги $$$N$$$ палочек с длинами $$$L_i (1 \le i \le N)$$$, а также $$$M$$$ окружностей с радиусами $$$R_j (1 \le j \le M)$$$. Он решил составлять слова следующим образом: на букву «I» он потратит одну палочку, а на букву «Q» — одну палочку и одну окружность. Но не любые палочки будут гармонично смотреться с любыми окружностями. Некоторое время Рудольф составлял различные комбинации и в итоге выяснил два правила идеального слова:
Идеальное слово Теперь Рудольф задался вопросом, какое максимальное количество идеальных слов он может составить из имеющихся палочек и окружностей. Он просит вас помочь ему с этим вопросом.
Первая строка входных данных содержит два целых числа $$$N$$$ и $$$M$$$ $$$(1 \le N, M \le 10^5)$$$ — количество палочек и окружностей соответственно.
Вторая строка содержит $$$N$$$ целых чисел $$$L_i (1 \le L_i \le 10^9)$$$ — длины палочек.
Третья строка содержит $$$M$$$ целых чисел $$$R_i (1 \le R_i \le 10^9)$$$ — радиусы окружностей.
Выведите одно целое число — максимальное количество слов «IQ», которые может составить Рудольф.
5 3 10 6 8 1 2 6 5 3
2
В примере Рудольф может для первого слова взять палочки длиной $$$10$$$ и $$$1$$$ и окружность радиуса $$$5$$$, а для второго слова — палочки длиной $$$6$$$ и $$$2$$$ и окружность радиуса $$$3$$$. Также корректно будет взять палочки длиной $$$10$$$ и $$$2$$$ для первого слова, и палочки $$$6$$$ и $$$1$$$ для второго.
После очередного приключения Рудольф нашел эпический меч, который он решил зачаровать при помощи $$$N$$$ рунных слов. Рунное слово — это строка произвольной длины, состоящая из рун. Руна — строчная буква английского алфавита. Рудольф может накладывать рунные слова в любом порядке, при этом они соединяются в одно рунное слово, и каждое слово можно наложить только один раз. Рудольф хочет наложить слова так, чтобы получить самое сильное зачарование. Силой зачарования является максимальное количество подряд идущих одинаковых рун.
Помогите Рудольфу создать сильнейший меч.
Первая строка содержит целое число $$$N$$$ $$$(1 \le N \le 10^5)$$$ — количество рунных слов.
Далее идут $$$N$$$ строк, состоящих из строчных букв английского алфавита, — описания рунных слов.
Суммарная длина строк не превышает $$$10^6$$$.
Выведите одно целое число — максимальную силу зачарования, которую можно получить.
3 aaaaa aabcaacca bbbcbaaa
10
Рудольф решил освежить свои познания в астрономии и скачал новейшую карту звездного неба. Он настолько увлекся ее изучением, что не заметил, как пролетело $$$12$$$ часов. За это время он умудрился запомнить абсолютно все созвездия. Для этого он воспользовался небезызвестной техникой «дворец памяти». Ну а поскольку он все же математик, то его дворец памяти представляет собой координатную плоскость. На этой плоскости Рудольф и разместил все звезды, $$$i$$$-я из которых теперь имеет координаты $$$(X_i, Y_i)$$$.
Довольный собой, Рудольф решил проверить, насколько хорошо сработала эта техника. Поздней ночью он вышел на улицу и взглянул на небо. И тут он внезапно обнаружил там кроме звезд еще и луну. Рудольф быстро понял, что далеко не все созвездия он может найти, потому что они «спрятались» за луной. Чтобы актуализировать информацию в своей голове, он решил поместить в свой координатный дворец памяти луну, которая формально представляет собой круг радиуса $$$R$$$ с центром в точке $$$(X_0,Y_0)$$$. Ну а чтобы не засорять память лишней информацией, он решил забыть координаты звезд, принадлежащих тем созвездиям, которые полностью перекрыты луной.
Помогите Рудольфу определить, какие созвездия нужно забыть.
Первая строка содержит три целых числа $$$X_0, Y_0, R$$$ ($$$-10^9 \le X_0, Y_0, R \le 10^9$$$) — координаты и радиус луны в системе координат Рудольфа.
Вторая строка содержит целое число $$$N$$$ ($$$1 \le N \le 10^5$$$) — количество звезд.
Далее следует $$$N$$$ строк — описания звезд.
Каждая строка описания содержит пару целых чисел $$$X_i, Y_i$$$ ($$$-10^9 \le X_i, Y_i \le 10^9$$$) — координаты звезды. Далее следует непустая строка из строчных букв английского алфавита — наименование созвездия, которому принадлежит звезда. Длина наименования не превышает $$$20$$$.
В первой строке выведите целое число $$$K$$$ — количество созвездий, которые «спрятались» за луной.
Во второй строке выведите через пробел $$$K$$$ наименований созвездий, которые «спрятались» за луной, в лексикографическом порядке.
0 0 100 7 1 1 hydra 2 0 pegasus -1 3 hydra 0 0 hercules -200 0 pegasus 100 0 hydra 10 20 hercules
2 hercules hydra
Это интерактивная задача.
Рудольф очень любит мёд, и поэтому решил оборудовать пасеку и купить пчёл. Но не обычных, а очень умных. Настолько умных, что $$$N$$$ из них предложили сыграть в игру.
В этой игре есть бесконечная пчелиная сота, ячейки которой изначально пустые. Далее игра проходит следующим образом.
Рудольф выигрывает, если в какой-то момент времени появится ячейка, которая не заполнена мёдом, а ячейки вокруг неё заполнены. При этом не важно, после чьего хода произошла такая ситуация. На рисунках изображены примеры состояний сот в некоторый момент времени. На первом рисунке изображена выигрышная позиция, на втором Рудольф еще не выиграл.
![]() | ![]() |
| Выигрышная позиция | Промежуточная позиция |
Для удобства Рудольф и пчелы договорились наложить координатную ось на игровое поле следующим образом.
Помогите Рудольфу обыграть пчёл.
Первая строка содержит одно целое число $$$N$$$ $$$(1 \leq N \leq 30)$$$ — количество пчёл.
Когда позиция становится выигрышной, вам на вход будет подана строка «You win!». После этого ваша программа должна завершиться.
Чтобы заполнить ячейку мёдом, выведите в стандартный поток два целых числа $$$X, Y (|X, Y| \leq 10^3)$$$, где $$$X$$$ и $$$Y$$$ — координаты ячейки в заданной системе координат. Ячейка должна быть пустой перед запросом.
В ответ на этот запрос придет $$$N$$$ строк. $$$i$$$-я строка содержит два целых числа $$$X_i, Y_i (|X_i, Y_i| \leq 10^3)$$$ — координаты ячейки, которую заполняет $$$i$$$-я пчела. Гарантируется, что заполняемые ячейки перед их ходом свободны.
Когда ситуация становится выигрышной, вам на вход подаётся строка «You win!». После этого ваша программа должна завершиться. Заметьте, что ситуация может стать выигрышной как после вашего хода, так и после хода пчёл. Во втором случае строка будет подана сразу после хода, который сделал ситуацию выигрышной. Смотрите пример для лучшего понимания.
Если вы сделаете более $$$50 \cdot N$$$ запросов или сделаете некорректный запрос, решение получит вердикт «Неправильный ответ».
Если в какой-то момент ваша программа ничего не будет выводить или вы забудете выполнить операцию $$$flush$$$ после вывода вопроса или ответа, решение получит вердикт «Решение зависло».
Чтобы выполнить операцию $$$flush$$$, можно использовать (сразу после вывода запроса и перевода строки):
3 0 1 -1 1 1 1 2 -1 2 0 You win!
0 0 1 -1
Бернард, младший брат Рудольфа, учится в школе. И недавно он познакомился с факториалами. Факториал натурального числа $$$X$$$ — это произведение всех натуральных чисел от $$$1$$$ до $$$X$$$ включительно. Факториалы так восхитили Бернарда, что он начал считать факториалы всё больших и больших чисел. В конце концов он запутался и забыл, факториал какого числа он получил.
Бернард обратился за помощью к Рудольфу, чтобы узнать, факториалом какого числа является полученное им число $$$N$$$. Ну а Рудольф, так как он очень занят, обратился за помощью к вам. При этом учтите, что Бернард ещё маленький, а значит мог ошибиться в расчётах.
Первая строка содержит целое число без лидирующих нулей $$$N$$$ ($$$1 \le N$$$, количество цифр в числе $$$N$$$ не превосходит $$$10^6$$$) — число, полученное Бернардом.
Выведите положительное целое число, факториалом которого является число, которое получил Бернард. Если Бернард ошибся, и загаданное им число не является факториалом, выведите $$$-1$$$.
1
1
120
5
479001600
12
17
-1
Рудольф с недавнего времени решил пересмотреть свои хобби и увлекся вышиванием. Чтобы вышить очередной шедевр, Рудольфу нужно закупиться нитками. Для этого ему нужно понять, сколько вообще ниток нужно. В его распоряжении есть схема для вышивки, которая представляет собой прямоугольное поле состоящее из символов «.» и «x». Символом «x» отмечены элементы, которые как раз нужно вышивать. Рудольф уже достаточно опытен в этом деле, поэтому знает, что на один символ «x» уходит $$$L$$$ миллиметров ниток. Всем любителям вышивки хорошо известно, что в одном мотке содержится $$$K$$$ метров ниток.
Помогите Рудольфу определить, какое минимально количество мотков ниток нужно приобрести, чтобы их гарантированно хватило для вышивки заданной схемы.
Первая строка содержит целые числа $$$N$$$, $$$M$$$, $$$L$$$, $$$K$$$ ($$$1 \le N, M, K \le 100, 1 \le L \le 10^6$$$) — высота и ширина схемы для вышивки, длина нитки в миллиметрах, требуемая для вышивки одного крестика, а также размер одного мотка ниток в метрах.
Далее следует $$$N$$$ строк по $$$M$$$ символов — описание схемы для вышивки. Каждая строка описание состоит из символов «.» и «x».
Выведите единственное целое число — минимальное количество мотков ниток, которого гарантированно хватит для вышивки заданной схемы.
6 27 99 1 .xxx..xx....xxx..xxxx..xx.. ..x..x..x...x..x.x....x..x. ..x..x..x...x..x.x....x..x. ..x..x.xx...xxx..xxx..x..x. ..x..x..x...x....x....x..x. .xxx..xx.x..x....x.....xx..
6
3 3 4000 6 ... xxx ...
2
Перед новогодними праздниками Рудольф устроился в компанию, специализирующуюся на сборке новогодних подарков из конфет. Так как до Нового Года оставалось очень мало времени, в продаже были конфеты ровно четырёх видов, имеющие стоимости $$$C_1$$$, $$$C_2$$$, $$$C_3$$$, $$$C_4$$$ рубля за одну конфету.
Рудольфу поручили обработать $$$N$$$ заявок на сборку подарочных наборов. Каждая заявка имеет следующую структуру:
Рудольф задумался, а сколько есть способов собрать каждый подарочный набор. Помогите ему ответить на этот вопрос.
Первая строка содержит целые числа $$$C_1$$$, $$$C_2$$$, $$$C_3$$$, $$$C_4$$$ ($$$1 \le C_1, C_2, C_3, C_4 \le 1000$$$) — стоимости конфет каждого вида.
Вторая строка содержит целое число $$$N$$$ ($$$1 \le N \le 2 \cdot 10^5$$$) — количество подарочных наборов.
Следующие $$$2 \cdot N$$$ строк содержат описания заявок на сборку подарочных наборов, имеющие формат, указанный в условии задачи. $$$L_1$$$, $$$L_2$$$, $$$L_3$$$, $$$L_4$$$ ($$$1 \le L_1, L_2, L_3, L_4 \le 10^9$$$) — максимальные количества конфет заданных видов в подарке, $$$S$$$ ($$$1 \le S \le 10^5$$$) — стоимость подарка.
Выведите $$$N$$$ целых чисел — количества способов собрать каждый подарочный набор.
5 1 2 3 2 1 1 1 1 7 5 5 5 5 6
1 7
1 2 3 4 1 1 5 3 2 10
8
Рудольфу в руки попала занятная прямоугольная таблица из $$$N$$$ строк и $$$M$$$ столбцов, каждая ячейка которой окрашена в определенный цвет. А занятной эта таблица оказалась, поскольку в ней можно менять местами цвета соседних ячеек. Соседними считаются ячейки, имеющие общую сторону.
Рудольф долго развлекался с таблицей, хаотично обменивая цвета ячеек. В конце концов ему стало интересно, а сколько разных таблиц можно получить, сделав некоторое количество (возможно $$$0$$$) обменов. Две таблицы считаются разными, если отличаются цветом хотя бы одной ячейки.
Вычислите для Рудольфа ответ на его вопрос. Так как ответ может быть очень большим, посчитайте его остаток от деления на $$$10^9 + 7$$$
Первая строка входных данных содержит два целых числа $$$N$$$ и $$$M$$$ $$$(1 \le N, M \le 100)$$$ — размеры таблицы.
Далее идут $$$N$$$ строк по $$$M$$$ чисел $$$C_{i, j} (1 \le C_{i, j} \le 10^5)$$$ — цвет ячейки в $$$i$$$-й строке и $$$j$$$-м столбце.
Выведите одно целое число — количество разных таблиц, которые может получить Рудольф, по модулю $$$10^9 + 7$$$
2 1 3 4
2
2 2 5 4 4 5
6