Студент Петя устал от однотипных окон. Он хочет сделать окно таким образом, чтобы оно отвечало его стандартам красоты. Высота окна в комнате Пети равна $$$H$$$, а ширина равна $$$W$$$.
Петя хочет разделить окно вертикальной створкой на две части (левую и правую) так, чтобы ширина левой части была равна целому числу $$$A$$$, а ширина правой части была равна $$$W - A$$$.
После этого он хочет разделить правую часть окна горизонтальной створкой на верхнюю и нижнюю части так, чтобы высота верхней части была равна целому числу $$$B$$$, а высота нижней части была равна $$$H - B$$$.
Пусть $$$S_1$$$, $$$S_2$$$ и $$$S_3$$$ — площади получившихся трех частей, на которые створки разделили окно. Петя считает красоту окна равной числу $$$K = \min(S_1, S_2, S_3)$$$.
Зная размеры окна $$$H$$$ и $$$W$$$ найдите максимально возможное значение красоты $$$K$$$, при условии, что в качестве размеров $$$A$$$ и $$$B$$$ можно выбрать любые целые числа, которые удовлетворяют неравенствам $$$1 \le A \lt W$$$ и $$$1 \le B \lt H$$$.
В единственной строке через пробел даны два целых числа $$$H$$$ и $$$W$$$ ($$$2 \le H, W \le 1000$$$) — высота и ширина окна.
В единственной строке выведите единственное целое число — максимально возможное значение красоты окна.
2 2
1
2 3
2
Студент Саша любит решать в уме геометрические задачи. Однажды он увидел в магазине мед в сотах и придумал следующую задачу.
На координатной плоскости нарисованы два правильных шестиугольника с длиной стороны равной $$$1$$$. Каждый из шестиугольников расположен таким образом, что две его стороны параллельны оси $$$Y$$$, а нижняя вершина располагается в заданной точке плоскости с целочисленными координатами. Требуется найти площадь пересечения нарисованных шестиугольников.
Саша будет решать эту задачу в уме, поэтому хочет найти результат с округлением до ближайшего целого числа. Какой результат получит Саша, решая поставленную задачу?
Саша округляет числа по следующим правилам. Если дробная часть числа меньше $$$0.5$$$, то Саша округляет число в меньшую сторону, а иначе в большую сторону. Например, числа $$$1$$$, $$$1.2$$$, $$$1.499999$$$ округляются до целого числа $$$1$$$, а числа $$$1.5$$$, $$$1.777$$$, $$$1.9991$$$ округляются до целого числа $$$2$$$.
В первой строке через пробел даны два целых числа $$$x_1$$$ и $$$y_1$$$ ($$$0 \le x_1, y_1 \le 10^9$$$) — координаты нижней вершины первого правильного шестиугольника.
Во второй строке через пробел даны два целых числа $$$x_2$$$ и $$$y_2$$$ ($$$0 \le x_2, y_2 \le 10^9$$$) — координаты нижней вершины второго правильного шестиугольника.
В единственной строке выведите единственное целое число — площадь пересечения шестиугольников, округленную до целого числа.
1 1 3 1
0
На рисунке ниже изображены шестиугольники из примера. В этом примере шестиугольники не пересекаются, поэтому площадь их пересечения равна нулю.
Однажды студент МИСИС Анатолий сидел вечерком за компьютером и вел беседу с голосовым помощником от VK Марусей. Анатолий большой любитель программирования, поэтому разговор в итоге зашел о графах. От Маруси Анатолий узнал про деревья. А именно, граф из $$$n$$$ вершин является деревом, если он связный и у него $$$n - 1$$$ ребро. На этот момент Анатолий уже знал, что граф называют связным, когда между любой парой вершин этого графа существует как минимум один путь.
Этот разговор навел Анатолия на интересные мысли. Он представил себе граф из $$$n$$$ вершин, который является деревом. Далее он ввел обозначение $$$dist(a, b)$$$, которое обозначает кратчайшее расстояние между вершинами $$$a$$$ и $$$b$$$ в задуманном дереве. То есть $$$dist(a, b)$$$ — это наименьшее количество ребер, через которые необходимо пройти, чтобы из вершины $$$a$$$ попасть в вершину $$$b$$$. Затем Анатолий загадал число $$$m$$$ и определил, что в его графе $$$dist(a, b) \le m$$$ для всех пар $$$1 \le a, b \le n$$$, а также выполнено условие $$$dist(1, 2) = m$$$.
Позже Анатолий еще немного поговорил с Марусей о погоде и снова вернулся к размышлениям о задуманном дереве. На этот раз он задумался о далеких вершинах своего дерева. Вершина $$$v$$$ в дереве Анатолия называется далекой, если выполнены два условия $$$dist(1, v) = m$$$ и $$$dist(2, v) = m$$$.
Наконец Анатолий задумался, чему равно минимально возможное количество далеких вершин в его дереве. А еще он задался вопросом, чему равно максимально возможное количество далеких вершин в его дереве. Помогите Анатолию ответить на эти вопросы.
В единственной строке через пробел даны два целых числа $$$n$$$ ($$$3 \le n \le 10^5$$$) и $$$m$$$ ($$$1 \lt m \lt n$$$) — количество вершин в дереве и расстояние $$$dist(1, 2)$$$.
В единственной строке через пробел выведите два целых числа — минимально возможное и максимально возможное количество далеких вершин в заданном дереве.
3 2
0 0
7 4
0 1
В первом примере есть только один возможный вариант дерева (рисунок 1) и в нем нет далеких вершин.
Во втором примере есть несколько вариантов деревьев. Существует дерево без далеких вершин (рисунок 2), существует дерево с одной далекой вершиной (рисунок 3). Можно доказать, что для второго примера не бывает деревьев, у которых более одной далекой вершины.
У девочки Кати есть клетчатое поле размера $$$n \times m$$$. Любимая фигура Кати уголок — фигура из трех клеток, которая может быть получена из квадрата $$$2 \times 2$$$ удалением одной из клеток. Катя хочет разрезать имеющееся у нее поле на уголки. Но ее младший брат Женя решил вырезать ровно одну клетку поля так, чтобы у Кати не получилось разрезать оставшуюся часть поля на уголки.
Женя не может понять, возможно ли так вырезать ровно одну клетку, чтобы оставшуюся часть поля нельзя было разрезать на уголки. Помогите Жене ответить на этот вопрос.
В единственной строке через пробел даны два целых числа $$$n$$$ и $$$m$$$ — размеры клетчатого поля ($$$2 \le n, m \le 10^5$$$).
Если есть способ вырезать ровно одну клетку данного клетчатого поля так, чтобы оставшуюся часть поля нельзя было разрезать на уголки, выведите в единственной строке слово «YES» (без кавычек). В противном случае выведите в единственной строке слово «NO» (без кавычек).
2 2
NO
3 3
YES
Абитуриент Максим усиленно готовится к поступлению в МИСИС по олимпиаде. Поэтому он попросил своего учителя дать ему задачу для тренировки. Учитель знает, что Максим испытывает трудности с задачами, в которых нужно отвечать на запросы, поэтому дал ему именно такую задачу.
Максиму было тяжело, но он справился с этой задачей. Теперь Максим предлагает вам решить эту задачу, потому что она ему показалась очень интересной.
В этой задаче вам дан массив, состоящий из $$$n$$$ целых чисел.
Требуется обработать $$$q$$$ запросов двух типов. Каждый запрос состоит из двух целых чисел — типа запроса и номера элемента массива:
В первой строке задано целое число $$$n$$$ $$$(2 \le n \le 10^5)$$$ — размер массива $$$a$$$.
Во второй строке через пробел заданы $$$n$$$ целых чисел — элементы массива $$$a$$$ $$$(-10^5 \le a_i \le 10^5$$$ для $$$1 \le i \le n - 1,\:a_n = 10^6)$$$.
В третьей строке задано целое число $$$q$$$ $$$(1 \le q \le 10^5)$$$ — количество запросов.
Каждая строка из следующих $$$q$$$ содержит два целых числа $$$t$$$ и $$$i$$$ $$$(1 \le t \le 2,\:1 \le i \le n - 1)$$$ — тип запроса и номер элемента массива соответственно.
На каждый запрос первого типа выведите в отдельной строке единственное целое число — ответ на этот запрос.
5 4 3 5 2 1000000 5 1 1 2 1 1 1 2 2 1 1
5 2 -3
Студент МИСИС Роман пишет курсовую в лаборатории случайных последовательностей. Заведующий лабораторией дал Роману два числа $$$n$$$, $$$k$$$ и поручил сгенерировать случайную последовательность длины $$$n$$$. Каждый член этой последовательности является целым числом, которое выбирается с равной вероятностью из диапазона от $$$1$$$ до $$$k$$$ включительно.
Роман уже готов был запустить генератор случайных последовательностей, чтобы выполнить поручение заведующего кафедрой, но тут у него возник вопрос. Ему стало интересно, а чему равна вероятность того, что сгенерированная последовательность будет хорошей. Последовательность является хорошей, если не существует четырех ее последовательных члена, образующих строго возрастающую последовательность.
Помогите Роману ответить на этот вопрос.
В единственной строке через пробел даны два целых числа $$$n$$$ и $$$k$$$ — длина последовательности и диапазон ее членов ($$$1 \le n, k \le 50$$$).
Выведите единственное число — вероятность того, что сгенерированная последовательность будет хорошей.
Ваш ответ будет считаться верным, если $$$|P - Ans| \le 10^{-3}$$$, где $$$P$$$ — верный ответ, а $$$Ans$$$ — ваш ответ.
3 50
1.000000000000
4 4
0.996093750000
В первом примере любая последовательность будет хорошей, так как в последовательности длины три не найдется четырех последовательных члена. Следовательно, искомая вероятность для этого примера равна единице.
Во втором примере есть ровно $$$4^4 = 256$$$ различных последовательностей длины четыре, которые могут быть сгенерированы с одинаковой вероятностью равной $$$\frac{1}{256}$$$. Из всех этих последовательностей есть только одна последовательность, которая не является хорошей, а именно последовательность чисел 1, 2, 3, 4. Следовательно, искомая вероятность для этого примера равна $$$\frac{255}{256} = 0.99609375$$$.
Дана таблица из $$$n$$$ строк и $$$m$$$ столбцов, заполненная строчными буквами латинского алфавита.
Назовем таблицу хорошей, если в ней встречаются ровно две различные буквы, расположенные в шахматном порядке.
Следующие таблицы являются хорошими:
Следующие таблицы не являются хорошими:
Требуется найти количество хороших подтаблиц данной таблицы.
В первой строке даны два целых числа $$$n$$$ и $$$m$$$ $$$(2 \le n,\:m \le 300)$$$ — количество строк и столбцов в таблице соответственно.
В каждой из следующих $$$n$$$ строк задана последовательность, состоящая из $$$m$$$ строчных букв латинского алфавита.
Выведите единственное число — количество хороших подтаблиц данной таблицы.
2 2 aa aa
0
2 2 ab cd
4
2 2 ab ba
5
3 3 oxo xox oxx
19
У Миши есть ориентированный граф из $$$n$$$ вершин. Из каждой вершины графа выходит ровно два ребра — синее и красное. Папа Миши увидел этот граф и придумал $$$q$$$ маршрутов.
Каждый маршрут задается номером начальной вершины $$$v$$$ и состоит из перемещений. Перемещения состоят из переходов и задаются строкой $$$s$$$.
Строка $$$s$$$ формируется по следующим правилам:
Например, маршрут, начинающийся в вершине $$$529$$$ и состоящий из $$$79854$$$ перемещений, каждое из которых требует совершить переходы по синему-красному-красному-синему рёбрам, опишется следующим вводом:
Теперь Мише предстоит определить, в какой вершине завершится каждый маршрут. Вам необходимо ему в этом помочь.
В первой строке записаны два целых числа $$$n$$$ и $$$q$$$ $$$(2 \le n \le 10^5$$$, $$$1 \le q \le 5 \cdot 10^4)$$$ — количество вершин графа и количество маршрутов.
Во второй строке записаны $$$n$$$ целых чисел $$$r_1,r_2,\dots,r_n$$$ ($$$1 \le r_i \le n$$$), где $$$r_i$$$ — номер вершины, в которую ведёт красное ребро из вершины $$$i$$$.
В третьей строке записаны $$$n$$$ целых чисел $$$b_1,b_2,\dots,b_n$$$ ($$$1 \le b_i \le n$$$), где $$$b_i$$$ — номер вершины, в которую ведёт синее ребро из вершины $$$i$$$.
Следующие $$$q$$$ строк содержат описания маршрута в таком виде:
Выведите в отдельных строках $$$q$$$ целых чисел $$$f_1,f_2,\dots,f_q$$$ — номера конечных вершины каждого из маршрутов
4 3 2 3 4 1 4 1 2 3 1 1RRRRRRRR 1 12345RBRB 1 10000001R
1 1 2
Это интерактивная задача.
Студент Иван обожает игры, в которых нужно отгадывать числа.
В данный момент он играет на компьютере в игру, в которой нужно отгадать два загаданных числа $$$A$$$ и $$$B$$$, $$$(0 \le A, \ B \le 10^{9})$$$. В этой игре можно сделать запрос, который заключается в том, чтобы дать компьютеру число $$$X$$$, а в ответ получить значение выражения $$$(A \oplus X) + B$$$. Разрешается сделать не более пяти таких запросов, после чего игрок должен отгадать оба числа.
Здесь $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ — бинарная операция, действие которой эквивалентно применению логического исключающего ИЛИ к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны между собой, двоичный разряд результата равен $$$0$$$, в противном случае, двоичный разряд результата равен $$$1$$$.
Операция $$$\oplus$$$ существует во всех современных языках программирования, например, в языках Python, C++ и Java она обозначена как «$$$^\land$$$», а в Pascal — как «$$$\text{xor}$$$».
Для чтения ответов на запросы вида «$$$? \ X$$$» программа должна использовать стандартный ввод.
Входные данные будут содержать ответы на запросы, то есть значения выражений $$$(A \oplus X) + B$$$.
Тестирующая система даст вашей программе прочитать ответ на запрос из входных данных только после того, как ваша программа вывела соответствующий запрос системе и выполнила операцию flush.
Для осуществления запросов программа должна использовать стандартный вывод.
Ваша программа должна выводить запросы по одному в строке в виде «$$$? \ X$$$» (без кавычек), где $$$X$$$ $$$(0 \le X \le 10^{10})$$$ — число, которое мы даем компьютеру в момент запроса. После вывода каждой строки программа должна выполнить операцию flush.
Обратите внимание, что вы можете сделать не более $$$5$$$ запросов типа «$$$? \ X$$$».
Каждое из значений $$$X$$$ обозначает очередной запрос к системе. Ответ на запрос программа сможет прочесть из стандартного ввода.
В случае, если ваша программа отгадала два числа, выведите строку вида «$$$! \ A \ B$$$» (без кавычек), где $$$A$$$ и $$$B$$$ — это два загаданных числа, и завершите работу своей программы.
Запрос на вывод ответа не входит в ограничение на $$$5$$$ запросов.
Для сброса буфера вывода (то есть для операции «flush») сразу после вывода нужно сделать:
Другие варианты: cout.flush(), cout << flush.
Если вы используете не System.out, то используйте команду flush вашего потока вывода.
Напрямую можно сделать «flush» с помощью sys.stdout.flush() (требует import sys).
1 2 3 4 5
? 1 ? 2 ? 3 ? 4 ? 5 ! 0 0
В тестовом примере показано, как программа взаимодействует с проверяющей системой.
Сначала программа задает запрос первого типа $$$? \ 1$$$ (дает компьютеру число $$$X = 1$$$), а затем считывает число $$$1$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$? \ 2$$$ (дает компьютеру число $$$X = 2$$$), а затем считывает число $$$2$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$? \ 3$$$ (дает компьютеру число $$$X = 3$$$), а затем считывает число $$$3$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$? \ 4$$$ (дает компьютеру число $$$X = 4$$$), а затем считывает число $$$4$$$ — ответ на этот запрос.
Далее программа задает запрос первого типа $$$? \ 5$$$ (дает компьютеру число $$$X = 5$$$), а затем считывает число $$$5$$$ — ответ на этот запрос.
И в конце программа выводит ответ на задачу в виде $$$! \ 0 \ 0$$$ и завершает свою работу.
Почему ответ в данном случае равен $$$0 \ 0$$$?
Можно проверить, что такой ответ, действительно, подходит, так как $$$(0 \oplus 1) + 0 = 1$$$, $$$(0 \oplus 2) + 0 = 2$$$, $$$(0 \oplus 3) + 0 = 3$$$, $$$(0 \oplus 4) + 0 = 4$$$, $$$(0 \oplus 5) + 0 = 5$$$. Также можно доказать, что конкретно для такого набора полученных ответов на запросы ответ равен $$$0 \ 0$$$ и является единственным возможным.
Профессор Невзломайкин преподает криптографию в Берляндском институте безопасного информационного пространства «БИБИП». На одну из лекций профессор принёс целое число $$$n$$$, а также параметр $$$k$$$ — простое число, делящее $$$n$$$ нацело.
Профессор задал следующие определения:
Далее профессор дал главное определение: конфигурация $$$P$$$ является счастливой, если существует ровно $$$\displaystyle\left(\left(\frac{n}{k}\right)!\right)^k$$$ различных перестановок $$$B$$$, являющихся ключами к перестановке $$$P$$$.
Профессор пообещал поставить за семестр «отлично» первому студенту, который найдёт любую счастливую конфигурацию. Представьте, что вы студент «БИБИПа», который очень не хочет ночами готовиться к экзамену по криптографии — предъявите профессору Невзломайкину любую счастливую конфигурацию или сообщите, что для заданных $$$n$$$ и $$$k$$$ счастливой конфигурации не существует.
В единственной строке даны два натуральных числа $$$n$$$, $$$k$$$ $$$(2 \le k \le n \le 3 \cdot 10^5)$$$. Гарантируется, что $$$k$$$ простое, а $$$n = m \cdot k$$$, где $$$m$$$ — некоторое натуральное число.
Если счастливой конфигурации не существует, выведите в единственной строке «NO» (без кавычек).
Иначе в первой строке выведите «YES» (без кавычек). Затем во второй строке выведите через пробел $$$n$$$ целых чисел $$$p_1, p_2, \dots, p_n$$$ — найденную счастливую конфигурацию $$$P$$$.
Если существует несколько счастливых конфигураций $$$P$$$ — выведите любую.
6 3
YES 1 4 3 2 5 6
Приведём список ключей для счастливой конфигурации из примера:
$$$\bullet \ \ B = \left[1,\:2,\:3,\:5,\:4,\:6\right]$$$
$$$\bullet \ \ B = \left[1,\:5,\:3,\:2,\:4,\:6\right]$$$
$$$\bullet \ \ B = \left[4,\:2,\:3,\:5,\:1,\:6\right]$$$
$$$\bullet \ \ B = \left[4,\:5,\:3,\:2,\:1,\:6\right]$$$
$$$\bullet \ \ B = \left[1,\:2,\:6,\:5,\:4,\:3\right]$$$
$$$\bullet \ \ B = \left[1,\:5,\:6,\:2,\:4,\:3\right]$$$
$$$\bullet \ \ B = \left[4,\:2,\:6,\:5,\:1,\:3\right]$$$
$$$\bullet \ \ B = \left[4,\:5,\:6,\:2,\:1,\:3\right]$$$