#include <iostream> #include <algorithm> using namespace std; const int NN =1000*1000+7; const int MM=201718+7; int t, i ,j, c, licz, wyn, r; int ile[MM], jakie[NN], pot[27]; int main() { ios_base::sync_with_stdio(0); cin >> t; c=0; for (i=0; i<t; i++) { cin >> j; if (ile[j]==0) { jakie[c]=j; c++; } ile[j]++; } sort(jakie, jakie + c); pot[0]=1; for (i=1; i<27; i++) pot[i] = 2*pot[i-1]; licz = ile[jakie[0]]; for (i=1; i<c; i++) { r = jakie[i]-jakie[i-1]; if (r<25) licz = licz / pot[r]; else licz = 0; licz = licz + ile[jakie[i]]; } wyn = jakie[c-1]; while(licz > 1) { wyn++; licz = licz / 2; } cout << wyn << "\n"; return 0; }
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 | #include <iostream> #include <algorithm> using namespace std; const int NN =1000*1000+7; const int MM=201718+7; int t, i ,j, c, licz, wyn, r; int ile[MM], jakie[NN], pot[27]; int main() { ios_base::sync_with_stdio(0); cin >> t; c=0; for (i=0; i<t; i++) { cin >> j; if (ile[j]==0) { jakie[c]=j; c++; } ile[j]++; } sort(jakie, jakie + c); pot[0]=1; for (i=1; i<27; i++) pot[i] = 2*pot[i-1]; licz = ile[jakie[0]]; for (i=1; i<c; i++) { r = jakie[i]-jakie[i-1]; if (r<25) licz = licz / pot[r]; else licz = 0; licz = licz + ile[jakie[i]]; } wyn = jakie[c-1]; while(licz > 1) { wyn++; licz = licz / 2; } cout << wyn << "\n"; return 0; } |