Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def counting_s(minval, maxval, array):
- ans = [0] * (maxval - minval + 1)
- for i in array:
- ans[i-minval] = ans[i-minval] + 1
- result = []
- for j in range(maxval - minval + 1):
- result += [j + minval] * ans[j]
- return result
- def hs(aList):
- length = len(aList) - 1
- leastParent = round(length / 2)
- for i in range(leastParent, -1, -1):
- moveDown(aList, i, length)
- for i in range(length, 0, -1):
- if aList[0] > aList[i]:
- swap(aList, 0, i)
- moveDown(aList, 0, i - 1)
- def moveDown(aList, first, last):
- largest = 2 * first + 1
- while largest <= last:
- if (largest < last) and (aList[largest] < alist[largest + 1]):
- largest += 1
- if aList[largest] > aList[first]:
- swap(aList, largest, first)
- first = largest
- largest = 2 * first + 1
- else:
- return
- def swap(A, x, y):
- A[x], A[y] = A[y], A[x]
- worklist = []
- rn = input().split()
- minval = int(rn[0])
- maxval = int(rn[1])
- while True:
- try:
- for el in input().split():
- worklist.append(int(el))
- except:
- break
- if len(worklist) / (maxval - minval) > 0.05:
- worklist = counting_s(minval, maxval, worklist)
- else:
- hs(worklist)
- print(' '.join([str(c) for c in worklist]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement