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
#include <bits/stdc++.h>
using namespace std;
const int MAX=5e5+7;
int n,tab[MAX],a;
set<int>s;
bool Sort(int a,int b){
return a>b;
}
int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a;
        tab[a]++;
        s.insert(a);
    }
    sort(tab,tab+n+1,Sort);
    int res=1;
    int p=0,k=s.size()-1,acres=0;
    while(p!=k){
        if(tab[p]>tab[k]+acres){
            acres+=tab[k];
            k--;
        }
        else{
            p++;
            acres=0;
            res++;
        }
    }
    cout<<res;
}