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
#include <cstdio>
#include <algorithm>

using namespace std;
const int mx=1e6+5;

int ciag[mx];
int cnt[mx];
int n, mx_l, wynik;

int main(){
	scanf("%d",&n);
	for(int i=0; i<n; i++){
		scanf("%d",&ciag[i]);
		mx_l=max(mx_l, ciag[i]);
		cnt[ciag[i]]++;
	}
	sort(ciag, ciag+n);
	
	int i=0; 
	while(i<mx-10){
		int il=cnt[i];
		//printf(">pot %d il %d\n",i, il);
		int dod=il/2;
		cnt[i+1]+=dod;
		cnt[i]-=dod*2;
		i++;
	}
	for(int j=0; j<mx-2; j++){
		if(cnt[j]>0){
			//printf("j %d il %d\n",j, cnt[j]);
			wynik=max(wynik, j);
		}
	}
	printf("%d\n",wynik);
	return 0;
}