Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>

using namespace std;


int main() {

	int n;

	cin>>n;
	
	int a; 
	int max=0;//maksymalna potega
	int maxp=0;//odp - maksymalna potega dwojki
	unsigned long long spot=1;//wielkosci pot 2
	int maxpi = 0;//kandydat na maksymalna potege
	
	int tab[201719];//tablica do przechowywania ilosci danych poteg
	for( int i = 0; i < 201719; ++i )
 	{
 		tab[i]=0;	
 	}
	for( int i = 0; i < n; ++i )
 	{
 		cin>>a;
 		tab[a]++; 
		 if(a>max) max=a;	
		 //cout<<a<<" "<<tab[a]<<endl;	
 	} 
 		
 	//schemat hornera dla x=2

	unsigned long long suma;//ilosc oszczedno�ci
	suma = tab[0];
	for(int i = max; i >= 0; --i)
	{
		suma = tab[i] + 2*suma;
		
		//sprawdzanie potegi dwojki nie przekraczajacej liczby	
		spot = spot*2;
		//cout<<suma<<" "<<spot<<endl;
		maxpi++;//kolejna potega
		if(suma>=spot)
		{
			maxp = maxpi;	
		}	
	}

	if(spot>suma)//i�� w dol
	{
		while(spot>suma)
		{
			spot = spot/2;
			if(spot>=suma)
				maxpi--;
		}
		maxp=maxpi;
	}
	else//isc w gore
	{
		while(spot<suma)
		{
			spot = spot*2;
			if(spot<=suma)
			maxpi++;
		}
		maxp=maxpi;
	}
 	cout<<maxp;
 	
 	return 0;
}