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>
using namespace std;

const int SIZE = 201719;

int main(){
	int n;
	int tab[SIZE+1];
	cin >> n;
	int ind;
	int max=0;
	for(int i = 0; i <= SIZE; i++)
		tab[i] = 0;
	for(int i = 0; i < n; i++){
		cin >> ind;
		tab[ind]++;
	}
	for(int i = 0; i < SIZE; i++){
		if(tab[i] >= 1){
			max = i;
			if(tab[i] > 1)
				tab[i+1]+=tab[i]/2;
		}
	}
	while(tab[SIZE] > 0){
		max ++;
		tab[SIZE]/=2;
	}
	cout << max;
	return 0;
}