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
#include <cstdio>
#include <memory.h>
int main()
{
    int n;
    scanf("%d", &n);
    int t[201719];
    memset(t, 0, 201719*sizeof(int));
    int b;
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &b);
        t[b]++;
    }
    int maks = 0;
    for(int i = 0; i < 201718; i++)
    {
        t[i+1]+=t[i]/2;
        if(t[i]>0)
        {
            maks = i;
        }
    }
    if(t[201718]>0)
        maks=201718;
    if(maks<201718)
    {
        printf("%d\n", maks);
    }
    else
    {
        while(t[201718]>1)
        {
            t[201718]/=2;
            maks++;
        }
        printf("%d\n", maks);
    }
    return 0;
}