printРабочее место участника

printЗадачи

2157. Большое множество

Ограничения: время – 2s/4s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Чего только не творится в Недалеком королевстве. Волшебник Мерлин и рыцарь Артур иногда развлекаются тем, что Мерлин доказывает Артуру, что некоторое множество `S` большое. При этом множество такое большое, что Мерлин не может предъявить Артуру все элементы этого множества. Недавно они изобрели отличный способ доказательства: Артур выбирает случайным образом хеш-функцию `h` и число `y`, а Мерлин предъявляет Артуру `s\ ∈\ S`, такое что `h(s)\ =\ y`. Они даже прочитали в каком-то древнем манускрипте, что можно строго доказать, что этот метод работает, если должным образом определить понятия "большого множества" и "случайной хеш-функции". Но теперь они пошли дальше и придумали двухэтапную схему.
Рассмотрим функцию `f`. Будем говорить, что `y` является `k`-хорошим, если множество `S_y\ =\ {s\ ∈\ S\ ∧\ f(s)=y}` содержит хотя бы `k` элементов. Если Мерлин докажет, что множество `G` значений, которые являются `k`-хорошими, содержит хотя бы `d` элементов, это означает, что `S` имеет размер хотя бы `"kd"`.
Рассмотрим множество `S`, содержащее `n` элементов и функцию `f`, принимающую целые значения от 1 до `m`. Артура заинтересовал худший случай: каково максимальное `z`, такое что, какова бы не была функция `f`, Мерлин сможет, воспользовавшись описанной схемой, доказать, что в множестве `S` хотя бы `z` элементов. При этом Мерлин может выбрать `k` и `d`, но он может доказать Артуру только истинные утверждения про размеры множеств.
Например, пусть `n\ =\ 5`, а `m\ =\ 2`. Тогда Мерлин может доказать, что в `S` хотя бы 4 элемента. Действительно, если `f` отображает все элементы `S` в одно и то же число, то Мерлин доказывает, что хотя бы 1 значение является 5-хорошим. Если `f` отображает 1 элемент в одно значение и 4 остальных в другое, то Мерлин доказывает, что хотя бы 1 значение 4-хорошее. Наконец, если `f` отображает 2 элемента в одно значение и 3 элемента в другое, то Мерлин доказывает, что 2 элемента являются 2-хорошими. В любом случае Артур убеждается, что в `S` содержится хотя бы 4 элемента.
Входной файл содержит два числа: `n` и `m` (`1\ ≤\ n\ ≤\ 10^{18}`, `1\ ≤\ m\ ≤\ 100\ 000`).
Выведите одно число `z` – максимальное число, такое что для любой функции `f\ :\ S\ ->\ {1,..,m}` Мерлин может доказать, что хотя бы `d` значений являются `k`-хорошими для таких `d` и `k`, что `"dk"\ ≥\ z`.

Пример ввода

5 2

Пример вывода

4
Источник: neerc.ifmo.ru/school
loading