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
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define fi first
#define se second

const int MAXN = 5e5 + 7;



int solve(){
	
	int n, x;
	cin >> n;
	
	vector<int> cnt(MAXN, 0);
	int maks = 0;
	
	for(int i = 1; i <= n; i++){
		
		cin >> x;
		cnt[x]++;
	}
	
	vector<int> v;
	for(int i = 1; i <= n; i++) if(cnt[i] > 0) v.push_back(cnt[i]);
	sort(v.begin(), v.end());
	deque<int> dq;
	for(int u : v) dq.push_back(u);
	
	int ans = 0;
	
	while(!dq.empty()){
		
		ans++;
		int akt = dq.back();
		dq.pop_back();
		
		while(!dq.empty() && akt - dq.front() > 0){
			
			akt -= dq.front();
			dq.pop_front();
		}
		
		if(!dq.empty()) dq.front() -= (akt - 1);
	}

	return ans;
}


signed main(){
	
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	
	cout << solve() << '\n';
	
	return 0;
}