Лучшая попытка прыгуна
Условие
На соревновании по прыжкам у Саши есть несколько попыток. После каждой попытки судья записывает высоту в сантиметрах.
Засчитывают только лучшую попытку — ту, где высота самая большая.
Твоя задача — помочь судье быстро узнать, какая высота будет записана в итоговый протокол.
Формат ввода
В первой строке дано одно целое число n — количество попыток. Во второй строке дано n целых чисел — высоты попыток в сантиметрах.
Формат вывода
Выведи одно число — максимальную высоту среди всех попыток.
Ограничения
1 ≤ n ≤ 10000 ≤ высота ≤ 10000
Пример
Ввод:
5
120 135 133 140 128
Вывод:
140Как решать — идея подхода
Приём: Линейный проход (поиск максимума)
Ключевое наблюдение: в итоговый протокол попадёт только самая большая высота из всех попыток. Значит, не нужно ничего сортировать или хранить «лучшие» несколько — достаточно знать текущий максимум.
Приём: линейный проход с поддержанием максимума. Он работает, потому что максимум можно обновлять «на лету»: увидели новую высоту — сравнили с текущей лучшей и при необходимости заменили.
План решения:
- Считай
nи список изnвысот. - Инициализируй ответ первой высотой:
best = a[0]. - Пройди по оставшимся элементам:
- если текущая высота больше
best, обновиbest. - Выведи
best.
Мини-сниппет обновления:
if x > best: best = x
Сложность: O(n) по времени и O(1) дополнительной памяти (кроме хранения входного списка; можно и без списка, читая по одному числу).
Частая ошибка: начинать best с 0 или очень маленького числа «на глаз». Лучше брать первую попытку, так код корректен при любых допустимых значениях и не зависит от ограничений.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами