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
49
50
#include <iostream>
#include <string>
using namespace std;

struct _znaczki{
    int miasto;
    int ilosc = 0;
};

int main(){
    int n;
    cin >> n;
    _znaczki *znaczki = NULL;
    znaczki = (_znaczki*) malloc(n * sizeof(_znaczki));
    for(int i = 0; i < n; i++){
        int znaczek;
        cin >> znaczek;
        int index = 0;
        while(znaczki[index].ilosc != 0){
            if(znaczki[index].miasto == znaczek){
                znaczki[index].ilosc++;
                break;
            }
            index++;
        }
        if(znaczki[index].ilosc == 0)
            znaczki[index] = {znaczek, 1};
    }
    string wyjscie = to_string(n);
    bool statement = false;
    for(int i = 2; i <= n; i++){
        int ilosc = 0, index = 0;
        while(znaczki[index].ilosc != 0){
            ilosc += (znaczki[index++].ilosc / i) * i;
        }
        if(statement == true){
            wyjscie += " 0";
            continue;
        }
        if(ilosc == 0){
            wyjscie += " 0";
            statement = true;
            continue;
        }
        wyjscie += ' ';
        wyjscie += to_string(ilosc);
    }
    cout << wyjscie;
	return 0;
}