#include #include #include using namespace std; int main() { int n, i; long long a[100000], b[100000], m = numeric_limits::min(); long pos[100000]; cin >> n; for (i = 0; i < n; i++) { cin >> a[i]; } b[0] = m; pos[0] = 0; for (i = 1; i < n; i++) { if (a[i-1] >= b[i-1] - floor(log2(i - pos[i-1]))) { b[i] = a[i-1]; pos[i] = i - 1; } else { b[i] = b[i-1]; pos[i] = pos[i-1]; } if (a[i] + b[i] - floor(log2(i - pos[i])) > m) { m = a[i] + b[i] - floor(log2(i - pos[i])); } } cout << m << endl; return 0; }