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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <map>
#include <vector>

using namespace std;

int dzielenie(vector<int>& wartosci, int iloscOsob){
    if(wartosci.empty())
        return 0;
    int suma = 0;
    int dodawanie;
    for(int i=0;i<wartosci.size();i++){
        dodawanie = wartosci[i] - (wartosci[i] % iloscOsob);
        if (dodawanie == 0){
            wartosci.erase(wartosci.begin() + i);
            i--;
        }
        else
            suma+=dodawanie;

    }
    return suma;
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);

    map<int, int> ilosci;
    vector<int> wartosci;
    int n,element;
    cin >> n;

    for (int i = 0; i < n; i++) {
        cin >> element;
        ilosci[element]++;
    }

    for (const auto &pary: ilosci) {
        wartosci.push_back(pary.second);
    }

    for(int i = 1;i<=n;i++){
        cout<<dzielenie(wartosci,i)<<" ";
    }

    return 0;
}