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>
#include <vector>

using namespace std;

const int najwieksza_moneta = 201718;
const int rozm = najwieksza_moneta + 30; //30 to wiecej niz log2 z nmiliona;
const int wartownik = 1;

int main() {
	ios_base::sync_with_stdio( false );
	int ile_monet; cin >> ile_monet;
 
	vector< int > skarbonka( rozm );

	for( int i = 0; i < ile_monet; ++i ) {
		int moneta; cin >> moneta;
		skarbonka[moneta] += 1;
	}

	int wynik = 0;
	for( int moneta = 0; moneta < rozm - wartownik; ++moneta ) {
		int ile = skarbonka[moneta];
		if( ile > 0 ) {
			wynik = moneta;
		}
		int podwojone = ile / 2;
		skarbonka[moneta+1] += podwojone;
	}

	cout << wynik << endl;
}