def sort_by_quadratic_poly(nums, a, b, _):
pivot = -(b/(a*2.0))
index_right = bisect.bisect_left(nums, pivot)
sorted_by_quadratic_poly = []
index_left = index_right - 1
while index_left >=0 and index_right < len(nums):
if abs(nums[index_left] - pivot) <= abs(nums[index_right] - pivot):
sorted_by_quadratic_poly.append(nums[index_left])
index_left -= 1
else:
sorted_by_quadratic_poly.append(nums[index_right])
index_right += 1
if index_left < 0:
sorted_by_quadratic_poly.extend(nums[index_right:])
else:
sorted_by_quadratic_poly.extend(nums[:(index_left + 1)])
return sorted_by_quadratic_poly