from collections import Counter
def maksymalna_liczba_znaczkow(n, znaczki):
licznik = Counter(znaczki)
wyniki = [0] * n
posortowane_liczebnosci = sorted(licznik.values(), reverse=True)
max_k = posortowane_liczebnosci[0]
for k in range(1, n + 1):
if k > max_k:
break
maks_liczba = 0
for liczba_znaczkow in posortowane_liczebnosci:
if liczba_znaczkow < k:
break
maks_liczba += (liczba_znaczkow // k) * k
wyniki[k - 1] = maks_liczba
return wyniki
def main():
n = int(input())
znaczki = list(map(int, input().split()))
wyniki = maksymalna_liczba_znaczkow(n, znaczki)
for wynik in wyniki:
print(wynik, end=' ')
print()
if __name__ == "__main__":
main()
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 | from collections import Counter def maksymalna_liczba_znaczkow(n, znaczki): licznik = Counter(znaczki) wyniki = [0] * n posortowane_liczebnosci = sorted(licznik.values(), reverse=True) max_k = posortowane_liczebnosci[0] for k in range(1, n + 1): if k > max_k: break maks_liczba = 0 for liczba_znaczkow in posortowane_liczebnosci: if liczba_znaczkow < k: break maks_liczba += (liczba_znaczkow // k) * k wyniki[k - 1] = maks_liczba return wyniki def main(): n = int(input()) znaczki = list(map(int, input().split())) wyniki = maksymalna_liczba_znaczkow(n, znaczki) for wynik in wyniki: print(wynik, end=' ') print() if __name__ == "__main__": main() |
English