Разбор
Пусть — количество людей в первой, второй и третьей маршрутках. Для того чтобы после пересадки количество людей в маршрутках было одинаковое, необходимо чтобы сумма делилась на .
Пусть — количество людей, которое должно находиться в каждой маршрутке после пересадки. Тогда из каждой маршрутки следует пересадить в какую-то другую столько людей, чтобы в ней осталось ровно . Это возможно только если в маршрутке изначально находится больше пассажиров. Например, из первой маршрутки следует пересадить людей, если только . Со второй маршрутки следует пересадить людей (если ). Из третьей маршрутки следует пересадить людей (если ).
Реализация алгоритма
Читаем входные данные.
scanf("%d %d %d",&a,&b,&c);
Если общая сумма людей не делится на , то выводим IMPOSSIBLE.
if((a + b + c) % 3 != 0) puts("IMPOSSIBLE"); else { res = 0;
Вычисляем количество людей в маршрутках после пересадки.
d = (a + b + c) / 3;
В переменной считаем количество пересаживаемых людей.
if (a > d) res += a - d; if (b > d) res += b - d; if (c > d) res += c - d;
Выводим ответ.
printf("%d\n",res); }
Python реализация
Читаем входные данные.
a, b, c = map(int, input().split())
Если общая сумма людей не делится на , то выводим IMPOSSIBLE.
if (a + b + c) % 3 != 0: print("IMPOSSIBLE") else: res = 0
Вычисляем количество людей в маршрутках после пересадки.
d = (a + b + c) // 3
В переменной считаем количество пересаживаемых людей.
if a > d: res += a – d if b > d: res += b – d if c > d: res += c – d
Выводим ответ.
print(res)