У Алисы сегодня день рождения, и она хочет угостить своих одноклассников конфетами. В магазине, в который она успеет зайти перед школой, есть сладости двух видов: шоколадные и карамельные. Они продаются наборами по 3 штуки, причем в упаковке есть конфеты каждого из двух видов (то есть в одной упаковке лежат две конфеты одного вида и одна конфета другого вида).
По внешнему виду упаковки нельзя понять, какие конфеты лежат внутри.
Чтобы никого не обидеть, всем в классе нужно раздать конфеты одного вида, а оставшиеся девочка заберёт домой. Алисе нужно собираться в школу, поэтому она попросила вас посчитать, какое минимальное число упаковок нужно купить, чтобы конфет хватило на всех.
Условия выполнения
Правила автоматической проверки
Ограничения: Время выполнения: < 500 ms Выделяемая память 256 mb
Входные данные
В единственной строке задано число n (1 ≤ n ≤ 109) — количество человек в классе.
Выходные данные
Выведите единственное число — количество упаковок, которое должна купить Алиса.
Примечание:
Система оценки
Решения, правильно работающие при n ≤ 103, будут оцениваться в 25 баллов.
Решения, правильно работающие при n ≤ 106, будут оцениваться в 50 баллов.
Замечание
В первом примере (см. примеры ниже) Алиса купит две упаковки с конфетами. В первой упаковке лежат 2 конфеты одного вида, и 1 конфета другого вида. Если вторая упаковка будет такая же, как и первая, то у Алисы окажется 4 конфеты одного вида и 2 конфеты другого вида. Если вторая упаковка будет отличаться от первой, то у Алисы будет по 3 конфеты каждого вида. В любом случае у Алисы найдётся 3 конфеты одного вида.
Как видно из первого примера, для того, чтобы гарантированно получить 4 конфеты одного вида, недостаточно купить две упаковки.
2. Поле в игре «Речной бой» представляет собой полоску длины n клеток и шириной в одну клетку.
Где-то на поле расположен корабль из k клеток (k ≤ n). Какое наименьшее число выстрелов необходимо, чтобы гарантированно потопить корабль? После каждого выстрела сообщается его результат: «мимо», «ранен» или «убит».
Условия выполнения
Правила автоматической проверки
Ограничения: Время выполнения: < 1000 ms Выделяемая память 256 mb
Входные данные
Первая строка входных данных содержит целое число n (1 ≤ n ≤ 109).
Вторая строка входных данных содержит целое число k (1 ≤ k ≤ n).
Выходные данные
Выведите одно целое число — количество выстрелов.
Примечание:
Система оценки
Решения, правильно работающие при n ≤ 10, будут оцениваться в 40 баллов.
Замечание
В первом примере поле состоит из n = 4 клеток, корабль имеет длину k = 2. Первый выстрел нужно сделать в одну из двух центральных клеток. Если результатом будет «ранен», то вторая клетка корабля находится в одной из двух соседних клеток, и за два выстрела мы гарантированно потопим корабль Если результатом первого выстрела будет «мимо», то корабль занимает две единственные свободные смежные клетки, которые тоже можно подбить двумя выстрелами. Итого нужно 3 выстрела. Двух выстрелов недостаточно, так как всегда есть шанс промахнуться первым выстрелом.
Ответ
n = int(input())
l = 0
r = n + 1
while True:
m = (l + r) // 2
candies = m // 2 * 3 + (m % 2) * 2
l, r = (m, r) if candies < n else (l, m)
if abs(r - l) <= 1:
break
print(r)