EduBrick

M. Пары без общих битов

3000 мс · 256 МБ · всё или ничего

Посчитайте количество пар индексов i<ji < j, для которых ai;&;aj=0a_i ;\&; a_j = 0 — то есть у чисел нет ни одного общего единичного бита.

Условие ai;&;aj=0a_i ;\&; a_j = 0 означает, что aja_j является подмаской дополнения aia_i. А количество элементов, являющихся подмаской заданной маски, — это ровно то, что считает преобразование из классной задачи I.

Решение в три шага:

  1. Посчитать, сколько раз встречается каждое значение: cnt[v]cnt[v].
  2. Прогнать по cntcnt сумму по подмаскам — получится sub[m]sub[m], количество элементов, являющихся подмаской mm.
  3. Для каждого ii прибавить sub[¬ai]sub[\lnot a_i], где дополнение берётся в пределах nn битов.

В сумме каждая пара учтётся дважды, а элемент, равный нулю, учтёт сам себя. Поэтому ответ равен

(∑isub[¬ai])−#{i:ai=0}2.\frac{\left(\sum_i sub[\lnot a_i]\right) - \#\{i : a_i = 0\}}{2}.

Стоит это O(2B⋅B+n)O(2^B \cdot B + n), где BB — количество битов. Перебор всех пар был бы O(n2)O(n^2), то есть 5⋅1095 \cdot 10^9.

Дополнение внутри BB битов — это ((1 << B) - 1) ^ a, а не ~a: последнее перевернёт и старшие биты, которых в задаче нет.

Формат ввода

Первая строка содержит число nn (1≤n≤1051 \le n \le 10^5).

Вторая строка — nn чисел aia_i (0≤ai<2200 \le a_i < 2^{20}).

Формат вывода

Одно число.

Примеры

ввод
4
1 2 3 4
вывод
4
ввод
2
0 0
вывод
1
Войдите, чтобы отправлять решения.