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
#include <cstdio>

using namespace std;
unsigned int t[201720];
unsigned int n, a, b=0;
int main()
{
    scanf("%d",&n);
    //zliczenie wykładników
    for (int i =0; i<n; i++)
    {
        scanf("%d",&a);
        t[a]++;

    }
    //określenie makymalnego wykładnika
    for (int i =0; i<=201718; i++)
    {
        if (t[i]>1)
        {
            t[i+1]=t[i+1]+t[i]/2;

           b=i+1;
        }
        else if(t[i]==1) b=i;
    }
     if (b>201718) b=201718;
    printf("%d", b );
    return 0;
}