Контрольный результат тренера

тема: Сортировки · уровень: средний

Условие

В школьной секции по бегу тренер записал времена (в секундах) всех участников на короткой дистанции.

Чтобы поставить «контрольный результат» на следующую тренировку, он хочет выбрать такое время T, что:

Если подходящих значений несколько (это бывает при чётном числе участников), тренер выбирает меньшее из них.

Найдите выбранное время T.

Формат ввода

Первая строка: целое число n — число участников. Вторая строка: n целых чисел a1, a2, ..., an — времена участников.

Формат вывода

Выведите одно целое число — контрольный результат T.

Ограничения

Пример

Ввод:

5
12 7 10 7 9

Вывод:

9

Как решать — идея подхода

Приём: Сортировка и нижняя медиана

Ключевое наблюдение: условия про «как минимум половина не быстрее T» (времена ≥ T) и «как минимум половина не медленнее T» (времена ≤ T) ровно описывают медиану набора.

Если n нечётное, медиана единственная. Если n чётное, подходят все значения между двумя центральными элементами включительно, а по правилу «взять меньшее» нужно выбрать левый из двух центральных — это называют *нижняя медиана*.

Почему работает сортировка: после упорядочивания легко посчитать, сколько элементов слева (≤) и справа (≥) от выбранного.

План решения:

Мини-сниппет с формулой индекса:

Сложность: сортировка занимает O(n log n) по времени, память O(n).

Частая ошибка: при чётном n брать n//2 (верхнюю медиану). Здесь нужно именно меньшее подходящее, значит индекс (n-1)//2.

Разберись руками

Есть 5 результатов: 12, 7, 10, 7, 9 секунд. Тренер хочет выбрать такое время T, чтобы не меньше половины были с временем ≤ T и не меньше половины — с временем ≥ T. На этом примере ты руками найдёшь, какое T получится.

Идея: Сначала упорядочь все времена по возрастанию. После этого возьми значение, которое стоит посередине списка; если участников чётное число и «середина» получается из двух соседних значений, выбирай из них меньшее (то, что левее в отсортированном списке).

Решить задачу с автопроверкой на Python →

Куда дальше