ПИТОН И С++ К-тая банка
У Никиты есть n банок газировки, каждая из которых имеет свой объём.
Известно, что полезнее всего пить газировку, начиная от банок большего объема и переходя к всё меньшим Никите найти k-ю по полезности банку. Встроенные алгоритмы сортировки не использовать.
Входные данные
В первой строке записаны два числа 1≤n≤105 и 1≤k≤103. Гарантируется, что k≤n.
Далее в строке записаны n целых чисел 0≤ai≤2⋅109 — объёмы банок.
Выходные данные
Вывести объём k-ой в порядке полезности банки.
Примеры
Ввод
Вывод
5 5
1 7 2 3 2
1
Dim Array() As Byte = {102, 103, 105, 105, 104, 108, 101, 109, 111, 113}
GnomeSort(Array, True)
End Sub
' // Алгоритм гномьей сортировки
Sub GnomeSort(ByRef Array() As Byte, ByVal ToUpper As Boolean)
Dim tui As Integer, index As Integer, last As Integer
If (ToUpper = True) Then tui = 1 Else tui = -1
index = 1
last = 2
Do
If ((Array(index) * tui) < (Array(index - 1) * tui)) Then
SWAP(Array(index), Array(index - 1))
index -= 1
If (index = 0) Then
index = last
last += 1
End If
Else
index = last
last += 1
End If
Loop While (index < (UBound(Array) + 1))
' // c2fbefeeebede8eb3a20caf3eff0e8ffedeee220c42ec52e2028632920442d6d6f6e3535
End Sub
' // Функция обмена двух переменных
Private Function SWAP(ByRef ic_a As Integer, ByRef ic_b As Integer) As Boolean
Dim Dump As Integer = ic_a
ic_a = ic_b
ic_b = Dump
Return True
End Function