Gəlin a, b, c — birinci, ikinci və üçüncü mikroavtobuslarda olan insanların sayını nəzərə alaq. Yenidən əyləşmə etmək üçün mikroavtobuslarda olan insanların sayı eyni olmalıdır, və bu zaman a + b + c 3-ə bölünməlidir.
Gəlin d = (a + b + c) / 3 — hər mikroavtobusda yenidən oturduqdan sonra insanların sayı olsun. Onda hər mikroavtobusdan başqa birinə bu qədər insan köçürülməsi lazımdır ki, orada dəqiq qədər insan qalsın. Bu yalnız o zaman mümkündür ki, mikroavtobusda əvvəlcədən qədərdən çox sərnişin olsun. Məsələn, birinci mikroavtobusdan a - d insan köçürmək lazımdır, əgər yalnız a > ddirsə. İkinci mikroavtobusdan b - d insan köçürməlidir (əgər b > ddirsə). Üçüncü mikroavtobusdan c - d insan köçürmək lazımdır (əgər c > ddirsə).
Alqoritmin icrası
Giriş məlumatları oxuyuruq.
scanf("%d %d %d",&a,&b,&c);Əgər ümumi insanlar sayı 3-ə bölünmürsə, IMPOSSIBLE çıxışını veririk.
if((a + b + c) % 3 != 0)
puts("IMPOSSIBLE");
else
{
res = 0;Yenidən oturduqdan sonra mikroavtobuslarda olan insanların sayı ni hesablayırıq.
d = (a + b + c) / 3;dəyişənində köçürülən insanların sayını hesablayırıq.
if (a > d) res += a - d;
if (b > d) res += b - d;
if (c > d) res += c - d;Nəticəni çıxışa veririk.
printf("%d\n",res);
}Python icrası
Giriş məlumatları oxuyuruq.
a, b, c = map(int, input().split())Əgər ümumi insanlar sayı 3-ə bölünmürsə, IMPOSSIBLE çıxışını veririk.
if (a + b + c) % 3 != 0:
print("IMPOSSIBLE")
else:
res = 0Yenidən oturduqdan sonra mikroavtobuslarda olan insanların sayı ni hesablayırıq.
d = (a + b + c) // 3Köçürülən insanların sayını dəyişənində hesablayırıq.
if a > d: res += a – d
if b > d: res += b – d
if c > d: res += c – dNəticəni çıxışa veririk.
print(res)