Пара‑тройка конфет Ограничение по времени: 0.5 секунды Ограничение по памяти: 256 мегабайт У Алисы сегодня день рождения, и она хочет угостить своих одноклассников конфетами. В магазине, в который она успеет зайти перед школой, есть сладости двух видов: шоколадные и карамельные. Они продаются наборами по 3 штуки, причём в упаковке есть конфеты каждого из двух видов (то есть в одной упаковке лежат две конфеты одного вида и одна конфета другого вида).
По внешнему виду упаковки нельзя понять, какие конфеты лежат внутри. Чтобы никого не обидеть, всем в классе нужно раздать конфеты одного вида, а оставшиеся девочка заберёт домой. Алисе нужно собираться в школу, поэтому она попросила вас посчитать, какое минимальное число упаковок нужно купить, чтобы конфет хватило на всех. Формат входных данных В единственной строке задано число n (1≤n≤109 ) — количество человек в классе. Формат выходных данных Выведите единственное число — количество упаковок, которое должна купить Алиса.
Система оценки Решения, правильно работающие при n≤103 , будут оцениваться в 25 баллов. Решения, правильно работающие при n≤106 , будут оцениваться в 50 баллов. Замечание В первом примере Алиса купит две упаковки с конфетами. В первой упаковке лежат 2 конфеты одного вида и 1 конфета другого вида. Если вторая упаковка будет такая же, как и первая, то у Алисы окажется 4 конфеты одного вида и 2 конфеты другого вида. Если вторая упаковка будет отличаться от первой, то у Алисы будет по 3 конфеты каждого вида. В любом случае у Алисы найдётся 3 конфеты одного вида. Как видно из первого примера, для того, чтобы гарантированно получить 4 конфеты одного вида, недостаточно купить две упаковки. Ввод Вывод 3 2 4 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)