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() |