#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; } |
English