Codeforces Round 558 (Div. 2) |
---|
Закончено |
Куро только что узнал о перестановках и этого его вдохновило придумать новый вид перестановок. Он выбрал $$$n$$$ различных целых положительных чисел и сделал из них множество $$$S$$$. Теперь он определяет волшебную перестановку следующим образом:
Так как Куро очень восхищённо относится к волшебным перестановкам, то он хочет создать самую длинную возможную волшебную перестановку. Иначе говоря, он хочет найти такое наибольшее неотрицательное целое число $$$x$$$, что существует волшебная перестановка целых чисел от $$$0$$$ до $$$2^x - 1$$$. Поскольку он немного новичок в вопросе перестановок, он хочет чтобы вы ему помогли и нашли это $$$x$$$, а также волшебную перестановку для этого $$$x$$$.
Первая строка содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$) — количество элементов в множестве $$$S$$$.
Вторая строка содержит $$$n$$$ различных целых чисел $$$S_1, S_2, \ldots, S_n$$$ ($$$1 \leq S_i \leq 2 \cdot 10^5$$$) — элементы множества $$$S$$$.
В первой строке выведите наибольшее неотрицательное целое число $$$x$$$, такое что существует волшебная перестановка чисел от $$$0$$$ до $$$2^x - 1$$$.
Затем выведите $$$2^x$$$ целых чисел задающую волшебную перестановку чисел от $$$0$$$ до $$$2^x - 1$$$. В случае если существует несколько таких волшебных перестановок, выведите любую из них.
3 1 2 3
2 0 1 3 2
2 2 3
2 0 2 1 3
4 1 2 3 4
3 0 1 3 2 6 7 5 4
2 2 4
0 0
1 20
0 0
1 1
1 0 1
В первом примере $$$0, 1, 3, 2$$$ образует волшебную перестановку так как:
Где $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ.
Название |
---|