Разброс роста в классе

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

Условие

На уроке физкультуры учитель измерил рост нескольких ребят и записал числа в сантиметрах.

Разброс роста — это разница между самым высоким и самым низким ростом.

Помоги быстро понять, насколько ребята разные по росту.

Формат ввода

В первой строке дано целое число n — сколько ребят измерили. Во второй строке дано n целых чисел — их рост (в сантиметрах).

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

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

Ограничения

Пример

Ввод:

5
140 152 149 160 145

Вывод:

20

Потому что самый высокий — 160, самый низкий — 140, разница 20.

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

Приём: Однопроходный поиск минимума и максимума

Ключевое наблюдение: чтобы узнать «разброс», не нужно сортировать всех по росту. Достаточно знать только два числа — самый маленький и самый большой рост. Тогда ответ сразу считается как mx - mn.

Почему работает приём «один проход»: каждый новый рост либо улучшает текущий минимум, либо текущий максимум, либо не влияет. Значит, просматривая список один раз, мы точно найдём глобальные min и max.

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

Мини-сниппет логики обновления:

Сложность: O(n) по времени, O(1) по памяти (кроме хранения входных данных, если читаешь списком).

Частая ошибка: отсортировать массив (это лишнее) или неправильно инициализировать mn/mx (например, mn = 0 может сломать случай, когда все росты больше 0). Также проверь, что читаешь ровно n чисел.

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

Куда дальше