В городе Ж. ещё не очень распространены банковские карты, поэтому в автобусах обычно рассчитываются наличными. Пассажиры норовят заплатить за проезд крупными купюрами, поэтому каждому из них нужно дать ровно N рублей сдачи.
Выходя на рейс, кондуктор обнаружил, что у него осталось ровно A рублёвых монет и ровно B двухрублёвых монет. Определите, какому наибольшему числу пассажиров он сможет выдать N рублей сдачи, используя эти монеты.
Входные данные
Первая строка входных данных содержит целое положительное число N — величину сдачи. Вторая строка входных данных содержит целое неотрицательное число A — количество имеющихся монет в один рубль. Третья строка содержит целое неотрицательное число B — количество монет в два рубля.
Чиcло N, а также общая сумма монет у кондуктора, не превосходят 2×109 рублей.
Выходные данные
Программа должна вывести единственное целое число — максимальное число пассажиров, которым можно выдать сдачу.
Система оценки
Решения, правильно работающие, когда входные числа не превосходят 100, будут оцениваться в 60 баллов.
Пример
Ввод
Вывод
Пояснение
5
9
7
4
Каждому пассажиру нужно выдать 5 рублей сдачи. У кондуктора есть 9 рублёвых монет и 7 двухрублёвых монет. Он может выдать трём пассажирам сдачу в виде 5=2+2+1 и ещё одному пассажиру сдачу в виде 5=2+1+1+1. У кондуктора останется три рублёвые монеты, их не хватит на сдачу.
Answers & Comments
Ответ (Python):
n = int(input())
a = int(input())
b = int(input())
left = 0
right = (a + 2 * b) // n + 2
while right - left > 1:
mid = (left + right) // 2
count2 = n // 2 * mid
count1 = n % 2 * mid
if a > count1:
count2 -= (a - count1) // 2
if count1 <= a and count2 <= b:
left = mid
else:
right = mid
print(left)