Задача №114567. Автомобиль <<Пантера>>

Однажды утром Глеб с ужасом осознал, что проспал, а пары в «Высшем университете» начинаются уже скоро. Опоздать было бы не так страшно, если бы он их и не вёл. К счастью, автомобиль Глеба «Пантера» довольно мощный: для упрощения будем считать, что за одну секунду он может сначала или увеличить скорость на \(1\), или уменьшить скорость на \(1\), или не менять её, а после этого его автомобиль проезжает \(x\) метров, где \(x\) — его текущая скорость в метрах в секунду. Потом он снова принимает решение об изменении скорости. Начальная скорость автомобиля преподавателя в момент, когда он только выезжает из дома, равна нулю. Путь до университета от его дома не близкий: нужно проехать \(d\) метров.

Глеб, обеспокоенный за знания своих студентов, хочет попасть в университет как можно раньше, чтобы успеть подготовиться к проведению лекции. К сожалению, у проезда на парковку университета установлен датчик движения: если скорость проезжающего транспортного средства будет превышать \(s\), то администрация университета выпишет нарушителю дисциплинарное взыскание. Конечно, Глеб не хочет его получить, поэтому при въезде в университет, когда автомобиль проехал все \(d\) метров его скорость \(x\) должна быть не больше \(s\).

Пока Глеб собирался на работу, его заинтересовал вопрос, а за какое минимальное время он может доехать до работы, если будет действовать оптимально, но не нарушать правила при въезде в университет. Так как преподаватель будет занят скоростным вождением, ответить на этот вопрос честь выпала вам!

Входные данные

В двух строках заданы два целых числа — \(d\), \(s\) (\(1 \leq d \leq 10^{18}\), \(0 \leq s \leq 10^{18}\)), расстояние до университета и ограничение на конечную скорость.

Обратите внимание, что входные данные могут быть больше, чем возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C и C++, тип long в Java и C#). Язык Python будет корректно работать и с типом int.

Выходные данные

Выведите единственное число — минимальное время, за которое Глеб может доехать до университета, не получив дисциплинарное взыскание.

Примечание

В первом тесте из условия Глебу выгодно действовать следующим образом:

  1. Увеличить скорость на один, проехать один метр; скорость \(1\) м/с, проехал \(1\) метр.
  2. Не менять скорость, проехать один метр; скорость \(1\) м/с, проехал \(2\) метра.

Таким образом, он потратит \(2\) секунды, и его конечная скорость будет равно \(1\) м/с, что не превышает \(s\).

Во втором тесте из условия Глебу выгодно действовать, например, так:

  1. Увеличить скорость на один, проехать один метр; скорость \(1\) м/с, проехал \(1\) метр.
  2. Увеличить скорость на один, проехать два метра; скорость \(2\) м/с, проехал \(3\) метра.
  3. Увеличить скорость на один, проехать три метра; скорость \(3\) м/с, проехал \(6\) метров.
  4. Уменьшить скорость на один, проехать два метра; скорость \(2\) м/с, проехал \(8\) метров.
  5. Уменьшить скорость на один, проехать один метр; скорость \(1\) м/с, проехал \(9\) метров.
  6. Не менять скорость, проехать один метр; скорость \(1\) м/с, проехал \(10\) метров.
  7. Уменьшить скорость на один; скорость \(0\) м/с, проехал \(10\) метров.

Таким образом, он потратит \(7\) секунд, и его конечная скорость будет равно \(0\) м/с, что не превышает \(s\).

Система оценки

В данной задаче \(25\) тестов, помимо тестов из условия, каждый из них оценивается в \(4\) балла. Результаты работы ваших решений на всех тестах будут доступны сразу во время соревнования.

Решения, корректно работающие при \(s = 0\), наберут не менее \(20\) баллов.

Решения, корректно работающие при \(1 \leq d \leq 10^4\), наберут не менее \(40\) баллов.

Решения, корректно работающие при \(1 \leq d \leq 10^9\), наберут не менее \(60\) баллов.

Примеры
Входные данные
2
1
Выходные данные
2
Входные данные
10
0
Выходные данные
7
Сдать: для сдачи задач необходимо войти в систему