Нехай a, b, c — кількість людей в першій, другій та третій маршрутках. Для того щоб після пересадки кількість людей в маршрутках була однаковою, необхідно щоб сума a + b + c ділилася на .
Нехай d = (a + b + c) / 3 — кількість людей, яка повинна бути в кожній маршрутці після пересадки. Тоді з кожної маршрутки слід пересадити в якусь іншу стільки людей, щоб в ній залишилося рівно . Це можливо тільки якщо в маршрутці спочатку знаходиться більше пасажирів. Наприклад, з першої маршрутки слід пересадити a - d людей, якщо тільки a > d. З другої маршрутки слід пересадити b - d людей (якщо b > d). З третьої маршрутки слід пересадити c - d людей (якщо c > d).
Реалізація алгоритму
Читаємо вхідні дані.
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)