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
#include <iostream>
#include <vector>

using namespace std;

int n,x,maxi,mini,g;
vector<int> _;

int main()
{

    cin >> n;



    for(int i=0; i<n; i++)
    {
        cin >> x;


        if(i==0)
        {
            maxi = x;
            mini = x;
        }
        maxi = max(maxi,x);
        mini = max(mini,x);

        for(int j=_.size(); j<x+1; j++) _.push_back(0);
        _[x]++;
    }

    for(int i =0; i<1000; i++)
    {
        _.push_back(0);
    }

    while(g < maxi || _[g] != 0)
    {
        if(_.size() < g+2)
        {
            _.push_back(0);
        }

        _[g+1] += _[g]/2;

        g++;
    }

    cout << g-1 << endl;

    return 0;
}