Bedao Mini Contest 26 - Mảng OR

Xem dạng PDF

Gửi bài giải


Điểm: 0,01 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho mảng ~a~ có ~n~ phần tử ~a_1, a_2, \cdots, a_n~. Với một dãy con liên tiếp từ ~l~ đến ~r~, bằng cách lấy tổng OR tất cả các số, bạn tìm kiếm thêm được số mới có giá trị là ~a_l~ ~|~ ~a_{l + 1}~ ~|~ ~\cdots~ ~|~ ~a_r~.

Với dãy đã cho và phương pháp tìm kiếm trên, bạn tò mò muốn biết số lượng số phân biệt tối đa có thể tìm kiếm được.

Input

Dòng đầu tiên chứa số nguyên ~n~ (~1 \le n \le 10^5~) — độ dài dãy ~a~.

Dòng thứ hai gồm ~n~ số nguyên ~a_1, a_2, \cdots, a_n~ (~0 \le a_i \le 10^6~) — giá trị dãy ~a~.

Output

In ra trên một dòng là số lượng số phân biệt tối đa có thể tìm kiếm được từ dãy đã cho.

Scoring

Subtask Điểm Giới hạn
1 ~20~ ~n \le 5000~
2 ~80~ Không có ràng buộc gì thêm

Sample Input 1

3
2 4 0

Sample Output 1

4

Sample Input 2

11
1 2 3 4 5 6 1 2 9 10 5

Sample Output 2

11

Notes

Trong ví dụ thứ nhất, gọi ~f(l, r)~ ~=~ ~a_l~ ~|~ ~a_{l + 1}~ ~|~ ~\cdots~ ~|~ ~a_r~. Có thể tìm kiếm các số sau: ~f(1, 1) = 2~, ~f(1, 2) = 6~, ~f(1, 3) = 6~, ~f(2, 2) = 4~, ~f(2, 3) = 4~, ~f(3, 3) = 0~.

Vậy có thể tìm kiếm tối đa ~4~ giá trị phân biệt là ~0, 2, 4, 6~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.