if __name__ == "__main__":
n = input()
arr_in = input()
arr = [int(elem) for elem in arr_in.split()]
counters = [0] * int(n)
for _, x in enumerate(arr):
counters[x-1] += 1
counters.sort(reverse = True)
out, idx_front, idx_tail = 0, 0, int(n) - 1
while True:
out += 1
lid_count = counters[idx_front] - 1
while lid_count > 0 and idx_front < idx_tail:
if lid_count <= counters[idx_tail]:
counters[idx_tail] -= lid_count
counters[idx_front] = 0
lid_count = 0
break
else:
lid_count -= counters[idx_tail]
counters[idx_front] -= counters[idx_tail]
idx_tail -= 1
if idx_front >= idx_tail:
break
idx_front +=1
if counters[idx_front] == 0:
break
print(out)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | if __name__ == "__main__": n = input() arr_in = input() arr = [int(elem) for elem in arr_in.split()] counters = [0] * int(n) for _, x in enumerate(arr): counters[x-1] += 1 counters.sort(reverse = True) out, idx_front, idx_tail = 0, 0, int(n) - 1 while True: out += 1 lid_count = counters[idx_front] - 1 while lid_count > 0 and idx_front < idx_tail: if lid_count <= counters[idx_tail]: counters[idx_tail] -= lid_count counters[idx_front] = 0 lid_count = 0 break else: lid_count -= counters[idx_tail] counters[idx_front] -= counters[idx_tail] idx_tail -= 1 if idx_front >= idx_tail: break idx_front +=1 if counters[idx_front] == 0: break print(out) |
English