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
//zadanie liderzy potycznki algorytmiczne
#include <bits/stdc++.h>
using namespace std;

#define all(a) (a).begin(), (a).end()
#define pb push_back
#define ll long long
const char nl = '\n';
#define forn(i, n) for (int i = 0; i < int(n); i++)
#define forab(i, a, b) for (int i=a; i<(b); i++)
#define st first
#define nd second
#define mp make_pair
typedef vector<int> vi;
typedef vector<ll> vl;

const int maxn = 500005;

int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
    //wczytanie
    int n; cin >> n;
    vi a (n);
    for(int i = 0; i < n; ++i)
        cin >> a[i];
    //vector kubelkowy
    vi k (n);
    k.assign(n, 0);

    //zliczanie kubelkowe
    for(auto x : a)
        k[x]++;
    //sort zeby miec jak najwieksze liczby wystapien
    sort(k.begin(), k.end(), greater<int>());

//
//    for(int i = 0; i < n; i++)
//        cout << k[i] << nl; 

    int dlugosc = n, ans = 0;
    
    for(int i = 0; i <= n; ++i){
        n -= (k[i] + floor(k[i] / 2));
        ans++;
    }
    cout << ans << nl;
}