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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <vector>
#include <functional>
#include <bits/stdc++.h>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cctype>
#include <bitset>

using namespace std;

map <int,long long> znaczki;
vector < pair<long long,long long> > ilosci;

bool porownaj(pair<long long, long long> pair1, pair<long long, long long> pair2) {
    return pair1.first > pair2.first;
}

int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

int ile;
long long miasto, znaczki_max=0,suma=0;

cin >> ile;
for (int n=1; n<=ile; n++)
{
  cin >> miasto;
  ++znaczki[miasto];
}
for (const auto& n : znaczki)
{
  if (n.second>znaczki_max)
	znaczki_max=n.second;
//  cout << n.second << " ";
  ilosci.push_back(make_pair(n.second,0));
}
//cout << endl;
//for (int n=0; n<ilosci.size(); n++)
//  cout << ilosci[n] << " ";
//cout << endl;
sort(ilosci.begin(),ilosci.end(),porownaj);
//for (int n=0; n<ilosci.size(); n++)
//  cout << ilosci[n].first << " ";
//cout << endl;
//cout << endl;
//for (int n=0; n<ilosci.size(); n++)
//{
//  if (ilosci[n].first==1)
//	suma=suma+1;
//  else
//    suma=suma+ilosci[n].first/2;
//  ilosci[n].second=suma;
//}
//for (int n=0; n<ilosci.size(); n++)
//  cout << ilosci[n].first << " ";
//cout << endl;
//for (int n=0; n<ilosci.size(); n++)
//  cout << ilosci[n].second << " ";
//cout << endl;
//cout << endl;
for (int n=1; n<=ile; n++)
{
  if (n==1)
	cout << ile << " ";
  else
	if (n>znaczki_max)
	  cout << 0 << " ";
    else
	{
      suma=0;
//      for (int k=0; k<ilosci.size(); k++)
	  for (int k=0; n<=ilosci[k].first; k++)
	  {
        suma=suma+n*(ilosci[k].first/n);
	  }
	  cout << suma << " ";
	}
}

return 0;

}