Taksi#8352

Taksi (Həll təhlili)

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 = 0

Yenidən oturduqdan sonra mikroavtobuslarda olan insanların sayı ni hesablayırıq.

  d = (a + b + c) // 3

Köçü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 – d

Nəticəni çıxışa veririk.

  print(res)