import numpy as np
n = int(input())
a = np.array(input().split(), int)
# n = 1000000
# a = np.random.randint(n, size=n)
unique, counts = np.unique(a, return_counts=True)
counts[::-1].sort()
programResult = ""
for clientsCountI in range(1, n + 1):
try:
lastIndex = (np.argwhere(counts >= clientsCountI)[-1][0])
programResult += f"{str(np.sum(clientsCountI * (counts / clientsCountI).astype(int)))} "
except IndexError:
programResult += "0 " * (n - clientsCountI + 1)
break
print(programResult.strip())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import numpy as np n = int(input()) a = np.array(input().split(), int) # n = 1000000 # a = np.random.randint(n, size=n) unique, counts = np.unique(a, return_counts=True) counts[::-1].sort() programResult = "" for clientsCountI in range(1, n + 1): try: lastIndex = (np.argwhere(counts >= clientsCountI)[-1][0]) programResult += f"{str(np.sum(clientsCountI * (counts / clientsCountI).astype(int)))} " except IndexError: programResult += "0 " * (n - clientsCountI + 1) break print(programResult.strip()) |
English