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
// zna "Znaczki pocztowe" [C] - Jakub Bareja

#include <bits/stdc++.h>
#include <map>

using namespace std;

int n; // liczba znaczków
map<int,int> m; // m[i] - ile
vector<int> v;

bool por(int a, int b) {
    return a > b;
}

int main() {
    scanf("%d",&n);
    for(int i=0; i<n; i++) {
        int a; scanf("%d",&a);
        m[a]++;
    }
    for(auto it=m.begin(); it!=m.end(); it++) v.push_back(it->second);
    sort(v.begin(),v.end(),por);

    bool flaga = false;
    for(int i=1; i<=n; i++) {
        if(flaga) {
            printf("0 ");
            continue;
        }
        int suma = 0;
        for(int j: v) suma += (j/i)*i;
        printf("%d ", suma);
        flaga = (suma == 0);
    }
    printf("\n");
}