ОЧЕНЬ СРОЧНО!!! Одно из популярнейших соревнований в IT мире — ICPC World Finals. Это студенческое сорев- нование по спортивному программированию, где команды соревнуются в формате ICPC. В каждой команде есть 3 человека, 1 компьютер и 5 часов чтобы решить 10 − 14 задач. Тут важно не только умение каждого из участников, но и командная работа! Одно из важнейших качеств команды это взаимоуважение. Каждый из трех участников име- ет свой скилл (мастерство) s1, s2, s3. Чтобы в команде было взаимоуважение нужно чтобы все три участника имели одинаковый скилл. Чтобы увеличить скилл участникам можно решать легкие и сложные задачи: решение сложной задачи прибавляет +5 к скиллу, легкой — +1 к скиллу. Отметим, что решение одной задачи увеличивает скилл только одного участника и количество задач неогра- ниченно. Какое наименьшее суммарное количество задач нужно решить участникам команды чтобы достичь взаимоуважения?
Answers & Comments
Ответ:
Алгоритм решения:
1. Найдем среднее арифметическое скиллов участников: avg = (s1 + s2 + s3) / 3.
2. Если avg является целым числом, то все участники уже имеют одинаковый скилл и задачи решать не нужно. Выводим 0.
3. Иначе, найдем максимальный скилл из трех участников: max_skill = max(s1, s2, s3).
4. Вычисляем количество задач, которое нужно решить максимальному скиллу, чтобы достичь среднего скилла: num_tasks = ceil(avg - max_skill).
5. Вычисляем общее количество задач, которое нужно решить всей команде: total_tasks = num_tasks * 2 + (avg - max_skill - num_tasks).
6. Выводим total_tasks.
Примечание: функция ceil(x) возвращает наименьшее целое число, большее или равное x.
Реализация на Python:
import math
s1, s2, s3 = map(int, input().split())
avg = (s1 + s2 + s3) / 3
if avg.is_integer():
print(0)
else:
max_skill = max(s1, s2, s3)
num_tasks = math.ceil(avg - max_skill)
total_tasks = num_tasks * 2 + (avg - max_skill - num_tasks)
print(math.ceil(total_tasks))