VNOJ Round 01 - OR PAIR

View as PDF

Submit solution


Points: 0.00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho dãy số ~a~ độ dài ~n~.

Đếm số cặp ~(i, j)~ (~i \neq j~, ~1 \leq i, j \leq n~) sao cho tổng OR của ~a_i~ và ~a_j~ bằng tổng OR của ~n - 2~ số còn lại.

Hai cặp ~(i_1, j_1)~ và ~(i_2, j_2)~ được coi là khác nhau khi ~i_1 \neq i_2~ hoặc ~j_1 \neq j_2~.

Bạn có thể tìm hiểu về phép toán ORđây.

Input

Dòng đầu tiên là số nguyên ~n~ (~3 \leq n \leq 10^6~) là độ dài dãy ~a~.

Dòng tiếp theo gồm n số nguyên ~a_1, a_2, ..., a_n~ (~1 \leq a_i < 2^{20}~).

Output

In ra số lượng cặp ~(i, j)~ thỏa mãn.

Scoring

Subtask Điểm Giới hạn
~1~ ~20\%~ ~n \leq 500~
~2~ ~20\%~ ~n \leq 10^4~
~3~ ~60\%~ Không có ràng buộc gì thêm

Sample Input 1

6
1 2 3 10 9 8

Sample Output 1

12

Notes

Có 12 cặp ~(i, j)~ thỏa mãn là:

~(1, 4)~, ~(4, 1)~, ~(2, 5)~, ~(5, 2)~, ~(3, 4)~, ~(4, 3)~, ~(3, 5)~, ~(5, 3)~, ~(3, 6)~, ~(6, 3)~, ~(4, 5)~, ~(5, 4)~.

Xét cặp ~(1, 4)~:

— ~a_1~ OR ~a_4~ = ~1~ OR ~10~ = ~11~.

— ~a_2~ OR ~a_3~ OR ~a_5~ OR ~a_6~ = ~2~ OR ~3~ OR ~9~ OR ~8~ = ~11~.

Vì tổng OR của ~a_1~ và ~a_4~ bằng tổng OR của các số còn lại nên cặp ~(1, 4)~ là một cặp thỏa mãn.


Comments

Please read the guidelines before commenting.


There are no comments at the moment.