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
#include<cstdio>
#include<algorithm>
#include<memory>
int main()
{
	unsigned n;
	std::scanf("%u", &n);
	std::unique_ptr<unsigned[]>A{ new unsigned[n] };
	for (unsigned i = 0; i != n; ++i)
		std::scanf("%u", &A[i]);
	std::sort(&A[0], &A[n]);
	unsigned last = 0;
	unsigned count = 0;
	for (unsigned i = 0; i != n; ++i)
	{
		if (last != A[i])
		{
			if (A[i] - last >= 32)
				count = 0;
			else
				count >>= A[i] - last;
			last = A[i];
		}
		++count;
	}
	std::printf("%u\n", last + (31U -__builtin_clz(count)));
}