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
#include<stdio.h>
long tab[300000];

int main()
{
    long n, i, max=0,u=0;
    scanf("%ld", &n);
    for(int j=0; j<n; j++)
    {
        scanf("%ld", &i);
        tab[i]++;
        if(tab[i]>=2)
        {
            tab[i+1]+=tab[i]/2;
            tab[i]-=2*(tab[i]/2);
            if(i+1>u)
                u = i+1;
        }

        if(i>u)
            u = i;
    }

    for(int j=0; j<u+1 || tab[j]; j++)
    {
        if(tab[j]>=2)
        {
            tab[j+1]+=tab[j]/2;
            tab[j]-=2*(tab[j]/2);
        }

        if(tab[j])
            max = j;
    }

    printf("%ld", max);
    return 0;
}