Ali --- một lập trình viên tài năng nhưng đã quá nhàm chán với những bài toán sử dụng phép toán XOR. Anh ta quyết định thử thách bạn bằng một bài toán mới mẻ hơn.
Bạn được cung cấp một dãy số nguyên \(a_1, a_2, \ldots, a_n\).
Một đoạn con liên tiếp \(a_l, a_{l+1}, \ldots, a_r\) được gọi là tốt nếu thỏa mãn điều kiện:
$
a_l \,\&\, a_{l+1} \,\&\, \cdots \,\&\, a_r \;>\; a_l \,\oplus\, a_{l+1} \,\oplus\, \cdots \,\oplus\, a_r
$
Trong đó:
- \(\&\) là phép toán AND bitwise,
- \(\oplus\) là phép toán XOR bitwise.
Hãy tìm độ dài của đoạn con tốt dài nhất trong dãy, hoặc thông báo rằng không có đoạn con nào thỏa mãn.
\InputFile
- Dòng đầu tiên chứa một số nguyên \(n\) (\(1 \le n \le 3 \times 10^5\)) --- độ dài của dãy.
- Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^6\)).
\OutputFile
In ra một số nguyên duy nhất --- độ dài lớn nhất của đoạn con tốt. Nếu không có đoạn nào tốt, in ra \(0\).
\Scoring
- Subtask 1 (23 điểm): \(n \le 2000\)
- Subtask 2 (15 điểm): \(a_i \in \{0, 1\}\)
- Subtask 3 (32 điểm): \(n \le 10\,000\)
- Subtask 10 (30 điểm): không giới hạn gì thêm.
Example
Test 1
Input
2
5 6
Output
2
Test 2
Input
6
8 1 3 3 1 2
Output
4
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.