Мавпа та кокоси#1770

Мавпа та кокоси

0,5 секунди
64 мегабайти
Складна

Щоб розбити кокос, мавпи зазвичай підіймаються на дах -поверхової будівлі й скидають кокоси з даху. Одна кмітлива мавпа, втомившись постійно дертися на дах, вирішила знайти найнижчий поверх, з якого скинутий кокос розіб'ється. Мавпа може піднятись на будь-який поверх від до (дах вважається -м поверхом) і викинути кокос у вікно. Якщо кокос не розіб'ється після кидка, мавпа може використати його повторно для подальших експериментів. Для експериментів у мавпи є рівно кокосів. Мавпі потрібно визначити шуканий номер поверху, використовуючи не більше кокосів. Також вона хотіла б знайти цей поверх із мінімальною кількістю кидків, адже може переносити лише один кокос за раз, а після кожного кидка мусить спускатися на землю за черговим кокосом, підготовленим для експериментів, або за вже киданим, але не розбитим кокосом.

Напишіть програму, що спланує експерименти так, щоб мінімізувати кількість кидків у гіршому випадку. План повинен враховувати, що потрібний поверх може бути будь-яким із по , або ж кокос розіб'ється лише якщо скинути його з даху.

Вхідні дані

У першому рядку введено два цілих числа через пробіл: кількість поверхів у будівлі (1 \le n \le 1000000) і кількість кокосів (1 \le k \le 1000).

Вихідні дані

Виведіть мінімальну кількість експериментів у найгіршому випадку.

Приклади

Приклад 1

Loading
Loading