Середній бал для фігуристів#7368

Середній бал для фігуристів (Розбір)

Для кожного спортсмена знайдемо мінімальну і максимальну оцінки. Потім обчислимо середній бал, не враховуючи і .

Приклад

Для першого фігуриста мінімальна оцінка , максимальна . Середнє арифметичне оцінок, відмінних від і , дорівнює (8 + 9 + 8) / 3 = 8.33.

Для останнього фігуриста мінімальна оцінка , максимальна . Середнє арифметичне оцінок, відмінних від і , дорівнює (8 + 9) / 2 = 8.50.

Реалізація алгоритму

Читаємо кількість суддів і кількість спортсменів .

scanf("%d %d", &n, &m);

Послідовно обробляємо дані кожного фігуриста.

for (i = 0; i < m; i++)
{
  scanf("%d", &mas[0]);

Знаходимо найменшу і найбільшу оцінки для поточного -го фігуриста.

  min = max = mas[0];
  for (j = 1; j < n; j++)
  {
    scanf("%d", &mas[j]);
    if (mas[j] > max) max = mas[j];
    if (mas[j] < min) min = mas[j];
  }

Обчислюємо:

  sum = cnt = 0;
  for (j = 0; j < n; j++)

Найменші і найбільші бали в розрахунках не враховуються.

    if ((mas[j] != min) && (mas[j] != max))
    {
      sum += mas[j];
      cnt++;
    }

Обчислюємо і виводимо середнє арифметичне оцінки для -го фігуриста.

  res = 1.0 * sum / cnt;
  printf("%.2lf ", res);
}
printf("\n");

Python реалізація

Читаємо кількість суддів і кількість спортсменів .

n, m = map(int,input().split())

Послідовно обробляємо дані кожного фігуриста.

for _ in range(m):
  lst = list(map(int,input().split()))

Знаходимо найменшу і найбільшу оцінки для поточного фігуриста.

  min_el = min(lst)
  max_el = max(lst)

Обчислюємо:

  s = sum(x for x in lst if x != min_el and x != max_el)
  cnt = sum(1 for x in lst if x != min_el and x != max_el)

Обчислюємо і виводимо середнє арифметичне оцінки для поточного фігуриста.

  print("%.2f" %(s / cnt), end = ' ')