Codeforces Global Round 8 |
---|
Закончено |
Готтфрид узнал про двоичное представление чисел. Он придумал эту задачу и предложил её вам.
Вам дан набор из $$$n$$$ неотрицательных целых чисел $$$a_1, \ldots, a_n$$$. Вы можете выполнять следующую операцию: выбрать два различных индекса $$$1 \leq i, j \leq n$$$. Если перед операцией $$$a_i = x$$$, $$$a_j = y$$$, то после операции $$$a_i = x~\mathsf{AND}~y$$$, $$$a_j = x~\mathsf{OR}~y$$$, где $$$\mathsf{AND}$$$ и $$$\mathsf{OR}$$$ — операции побитового И и ИЛИ соответственно (для формального описания см. раздел Комментарии). Данную операцию можно применять любое количество раз (возможно, ноль).
После того, как все операции выполнены, вычислим $$$\sum_{i=1}^n a_i^2$$$ — сумму квадратов всех $$$a_i$$$. Какую максимальную сумму квадратов можно получить?
В первой строке записано одно целое число $$$n$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$).
Во второй строке записано $$$n$$$ целых чисел $$$a_1, \ldots, a_n$$$ ($$$0 \leq a_i < 2^{20}$$$).
Выведите одно число — максимально возможная сумма квадратов после применения нескольких операций (возможно, ни одной).
1 123
15129
3 1 3 5
51
2 349525 699050
1099509530625
В первом примере нельзя сделать ни одной операции, поэтому ответ равен $$$123^2$$$.
Во втором примере мы можем получить набор $$$1, 1, 7$$$, и $$$1^2 + 1^2 + 7^2 = 51$$$.
Если $$$x$$$ и $$$y$$$ записаны в двоичной системе с одинаковым числом бит (возможно, с ведущими нулями), то любой бит $$$x~\mathsf{AND}~y$$$ равен $$$1$$$ тогда и только тогда, когда оба соответствующих бита $$$x$$$ и $$$y$$$ равны $$$1$$$. Аналогично, любой бит $$$x~\mathsf{OR}~y$$$ равен $$$1$$$ тогда и только тогда, когда хотя бы один из соответствующих битов $$$x$$$ и $$$y$$$ равен $$$1$$$. Например, $$$x = 3$$$ и $$$y = 5$$$ можно представить как $$$011_2$$$ и $$$101_2$$$ (старший бит слева). Тогда $$$x~\mathsf{AND}~y = 001_2 = 1$$$ и $$$x~\mathsf{OR}~y = 111_2 = 7$$$.
Название |
---|