E. Bored Bakry
bitmasks; greedy; math; two pointers
Bakry got bored of solving problems related to xor, so he asked you to solve this problem for him.You are given an array \(a\) of \(n\) integers \([a_1, a_2, \ldots, a_n]\).Let's call a subarray \(a_{l}, a_{l+1}, a_{l+2}, \ldots, a_r\) good if \(a_l \, \& \, a_{l+1} \, \& \, a_{l+2} \, \ldots \, \& \, a_r > a_l \oplus a_{l+1} \oplus a_{l+2} \ldots \oplus a_r\), where \(\oplus\) denotes the bitwise XOR operation and \(\&\) denotes the bitwise AND operation.Find the length of the longest good subarray of \(a\), or determine that no such subarray exists.
The first line contains a single integer \(n\) (\(1 \le n \le 10^6\)) — the length of the array.The second line contains \(n\) integers \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^6\)) — elements of the array.
Print a single integer — the length of the longest good subarray. If there are no good subarrays, print \(0\).
In the first case, the answer is \(2\), as the whole array is good: \(5 \& 6 = 4 > 5 \oplus 6 = 3\).In the third case, the answer is \(4\), and one of the longest good subarrays is \([a_2, a_3, a_4, a_5]\): \(1\& 3 \& 3 \&1 = 1 > 1\oplus 3 \oplus 3\oplus 1 = 0\).