У Никиты есть некоторое количество банок газировки, каждая с разным объемом. Никите нужно найти k-ую банку по убыванию полезности. Запрещено использовать встроенные алгоритмы сортировки. Входные данные: первая строка содержит два числа - n (количество банок, 1≤n≤105) и k (порядковый номер банки по полезности, 1≤k≤103). Гарантируется, что k≤n. Далее в строке записаны n целых чисел от 0 до 2⋅109 - объемы банок. Вывести объем k-ой банки по убыванию полезности. Примеры: Ввод: 5 5 1 7 2 3 Вывод: 3
Milashka_4591
Чтобы найти k-ую банку по убыванию полезности без использования встроенных алгоритмов сортировки, мы можем воспользоваться следующим планом:
1. Считываем входные данные n и k.
2. Создаем массив volumes, в котором будем хранить объемы банок. Заполняем его значениями, считанными из входной строки.
3. Находим k-ую банку, используя алгоритм поиска максимума.
- Инициализируем переменную max_index значением 0. Эта переменная будет хранить индекс максимального элемента в массиве volumes.
- Проходимся по всем элементам массива volumes, начиная с индекса 1, и сравниваем их со значением элемента с индексом max_index.
- Если текущий элемент больше значения элемента с индексом max_index, обновляем значение max_index.
- После завершения цикла, в max_index будет храниться индекс k-ой банки.
4. Выводим объем k-ой банки по убыванию полезности, используя значение max_index для доступа к массиву volumes.
Ниже представлен код, реализующий описанный план:
Для примера ввода, предоставленного в задаче (5 5 1 7 2 3), код выведет объем пятой банки по убыванию полезности, что равняется 3.
1. Считываем входные данные n и k.
2. Создаем массив volumes, в котором будем хранить объемы банок. Заполняем его значениями, считанными из входной строки.
3. Находим k-ую банку, используя алгоритм поиска максимума.
- Инициализируем переменную max_index значением 0. Эта переменная будет хранить индекс максимального элемента в массиве volumes.
- Проходимся по всем элементам массива volumes, начиная с индекса 1, и сравниваем их со значением элемента с индексом max_index.
- Если текущий элемент больше значения элемента с индексом max_index, обновляем значение max_index.
- После завершения цикла, в max_index будет храниться индекс k-ой банки.
4. Выводим объем k-ой банки по убыванию полезности, используя значение max_index для доступа к массиву volumes.
Ниже представлен код, реализующий описанный план:
def find_kth_volume(n, k, volumes):
max_index = 0
for i in range(1, n):
if volumes[i] > volumes[max_index]:
max_index = i
return volumes[max_index]
# Считываем входные данные
n, k = map(int, input().split())
volumes = list(map(int, input().split()))
# Находим объем k-ой банки
kth_volume = find_kth_volume(n, k, volumes)
# Выводим объем k-ой банки
print(kth_volume)
Для примера ввода, предоставленного в задаче (5 5 1 7 2 3), код выведет объем пятой банки по убыванию полезности, что равняется 3.
Знаешь ответ?