Задача с контеста. B. эффективная быстрая сортировка
Ревьюер сказал избавиться от переменных i, j в функции "def partition", тк +/- 1 уже есть в цикле и использовать сразу left, right.
Как это можно реализовать, не теряя в качестве кода? Сам код:
def partition(competitors, left, right):
pivot = (competitors[left])
i = left + 1
j = right - 1
while True:
if (i <= j and competitors[j] > pivot):
j -= 1
elif (i <= j and competitors[i] < pivot):
i += 1
if i <= j:
competitors[i], competitors[j] = competitors[j], competitors[i]
else:
competitors[left], competitors[j] = competitors[j], competitors[left]
return j
def quick_sort(competitors, left, right):
if ((right - left) > 1):
p = partition(competitors, left, right)
quick_sort(competitors, left, p)
quick_sort(competitors, p + 1, right)
def transformation(competitors):
competitors[1] = - int(competitors[1])
competitors[2] = int(competitors[2])
return [competitors[1], competitors[2], competitors[0]]
if __name__ == '__main__':
number = int(input())
competitors = [transformation(input().split()) for _ in range(number)]
left = 0
quick_sort(competitors, left, len(competitors))
print(*(list(zip(*competitors))[2]), sep="\n")