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
#include<bits/stdc++.h>
using namespace std;
const int N = 5e5 + 8;
struct licz{
    int val;
    int num;
};
bool operator< (licz a, licz b){
    if(a.num < b.num) return 0;
    if(a.num > b.num) return 1;
    if(a.val < b.val) return 0;
    return 1;
}
licz tab[N];
int main(){
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n;
    cin >> n;
    for(int i=1; i<=n; i++){
        tab[i].val = i;
        tab[i].num = 0;
    }
    int a;
    for(int i=0; i<n; i++){
        cin >> a;
        tab[a].num++;
    }
    sort(tab+1, tab+n+1);
    int cap = 0;
    int need = n;
    for(int i=1; i<=n; i++){
        int nu = tab[i].num;
        cap+=nu-1;
        need-=nu;
        if(cap>=need){
            cout << i;
            return 0;
        }
    }
}