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
#include <bits/stdc++.h>
using namespace std;
//#define int long long
constexpr int maxN = 5e5+7;

int n,a[maxN],cnt[maxN];

int32_t main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		cnt[a[i]]++;
	}
	vector<pair<int,int>>all;
	for(int i=1;i<=n;i++)
		if(cnt[i])
			all.push_back({cnt[i],i});
	sort(all.begin(), all.end());
	int i = 0, j = all.size()-1, ans = 0;
	while(i <= j){
		ans++;
		int can_take = all[j--].first-1;
		while(i < j && can_take > 0){
			if(all[i].first <= can_take){
				can_take -= all[i].first;
				i++;
			}
			else{
				all[i].first -= can_take;
				can_take = 0;
			}
		}
	}
	cout<<ans<<"\n";
}
/*

5
1 2 3 1 2


*/