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 <iostream>
#include <cstring>
#include <cmath>

#define A_RANGE 201719

int main() {
    int n, maxA = 0;
    int a[A_RANGE];
    memset(a, 0, A_RANGE * sizeof(int));
    std::cin >> n;
    
    for (int i=0; i<n; ++i) {
        int val;
        std::cin >> val;
        if (val > maxA) {
            maxA = val;
        }
        ++a[val];
    }
    
    for (int i=0; i<=maxA; ++i) {
        int next = a[i] / 2;
        if (next > 0) {
            a[i + 1] += next;
        }
    }

    float res = std::log2((float)a[maxA]);
    std::cout << maxA + (int)res;
    return 0;
}