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<set>
#include<iostream>
int tab[300000];
int main()
{
//	std::multiset<int>s;
	int n;
	int l,l1,l2;
	scanf("%d\n",&n);
	while(n--)
	{
		scanf("%d",&l);
//		s.insert(l);
		tab[l]++;
	}
/*
	while(s.size()>1)
	{
		l1 = *s.begin();
		s.erase(s.begin());
		l2 = *s.begin();
		if(l1==l2)
		{
			s.erase(s.begin());
			s.insert(l1+1);
		}
	}
	printf("%d\n",*s.begin());
*/
	int max=0;
	for(int i=0;i<299999;i++)
	{
		tab[i+1]+=tab[i]/2;
		if(tab[i+1])max=i+1;
	}
	printf("%d\n",max);
	return 0;
}