Кто на k‑м месте в таблице очков

тема: Сортировки · уровень: базовый

Условие

На школьном турнире по баскетболу тренер выписал очки всех игроков в одну строку. Потом он строит таблицу: очки сортируются по убыванию (больше — выше место). Тренеру нужно быстро узнать, сколько очков стоит на k‑м месте в такой таблице.

Важно: если у нескольких игроков одинаковые очки, они всё равно занимают подряд несколько мест, и на этих местах в таблице стоит одно и то же число очков.

Формат ввода

В первой строке два целых числа n и k — количество игроков и номер места в таблице. Во второй строке n целых чисел a1, a2, ..., an — очки игроков.

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

Выведите одно целое число — количество очков на k‑м месте после сортировки очков по убыванию.

Ограничения

Пример

Ввод:

5 2
10 50 20 50 5

Вывод:

50

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

Приём: Сортировка по убыванию

Ключевое наблюдение: «k‑е место» в таблице — это просто k‑й элемент в массиве после сортировки по убыванию. Никакой отдельной обработки одинаковых значений не нужно: если несколько игроков набрали одинаково, то после сортировки эти числа всё равно стоят рядом и занимают подряд несколько мест, значит на всех этих местах будет одно и то же значение.

Приём: обычная сортировка массива. Она здесь подходит, потому что n до 35000 — можно спокойно отсортировать все значения и напрямую обратиться к нужному.

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

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

Частая ошибка: перепутать индексацию. В условии k начинается с 1, а в списке Python индексы с 0, поэтому нужен именно k-1.

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

Есть 5 игроков и их очки: 10, 50, 20, 50, 5. Тренер строит таблицу мест: сортирует очки по убыванию (самые большие — в начале). Нужно узнать, какие очки окажутся на 2-м месте.

Идея: Сначала упорядочи очки по убыванию, чтобы получить «таблицу мест». Потом просто посмотри, какое число стоит на нужном месте k в этом упорядоченном списке.

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

Куда дальше