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
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5+7;
const int P = 550;
map<int,int> mapa;
int t[MAXN],kan[MAXN],l[MAXN];
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n,x,indk=1,res=0,cnt=0,rk=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x;
		if(mapa[x]==0) l[++cnt]=x;
		mapa[x]++;
	}
	for(int i=1;i<=cnt;i++){
		t[i]=mapa[l[i]];
		if(mapa[l[i]]>P) kan[++rk]=mapa[l[i]];
 	}
 	for(int i=1;i<=min(n,P);i++){
 		res=n;
 		for(int j=1;j<=cnt;j++){
 			res-=(t[j]%i);
 		}
 		cout<<res<<' ';
 	}
 	sort(kan+1,kan+rk+1);
 	for(int i=P+1;i<=n;i++){
 		res=0;
 		while(i>kan[indk]) indk++;
 		for(int j=indk;j<=rk;j++){
 			res+=((kan[j]/i)*i);
 		}
 		cout<<res<<' ';
 	}	
 	cout<<'\n';
	return 0;
}