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
#include <iostream>
int mon[201800];  // 201718 + 20+
using namespace std;

int main(){
	int i,n, maks=0, mm;
	cin >> n;
	for(i=0;i<201800;i++)
		mon[i]=0;
	for(i=1;i<=n;i++){
		cin >> mm;
		mon[mm]++;
		if(maks<mm)
			maks=mm;
	}
	i=0;
	while(i<=maks){
		mon[i+1] += mon[i] / 2;
		mon[i] = mon[i] % 2;  // niepotrzebne
		if((mon[i+1]>0)&&(maks<i+1))
			maks=i+1;
		i++;
	}
	cout << maks << endl;
	return 0;
}