308838: CF1582F2. Korney Korneevich and XOR (hard version)
Memory Limit:512 MB
Time Limit:1 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Korney Korneevich and XOR (hard version)
题意翻译
### 题目描述 给一个长度为 $n$ 的序列 $a_1,a_2,\dots,a_n$ ,寻找在 $a$ 的所有递增子序列(可以为空)的异或和中出现的数。 ### 输入格式 第一行一个正整数 $n$ 表示序列长度。 第二行 $n$ 个整数表示序列 $a$ 。 ### 输出格式 从小到大输出在 $a$ 的所有子序列(可以为空)的异或和中出现的数。 ### 数据范围 $1\le n\le10^6,0\le a_i\le5000$ 。 ### 样例解释 对于第一个样例: - 子序列 $\{\}$ 的异或和为 $0$ 。 - 子序列 $\{2\}$ 的异或和为 $2$ 。 - 子序列 $\{4\}$ 的异或和为 $4$ 。 - 子序列 $\{2,4\}$ 的异或和为 $6$ 。 其他子序列的异或和与上述其中一个子序列的异或和相等。题目描述
This is a harder version of the problem with bigger constraints. Korney Korneevich dag up an array $ a $ of length $ n $ . Korney Korneevich has recently read about the operation [bitwise XOR](https://en.wikipedia.org/wiki/Bitwise_operation#XOR), so he wished to experiment with it. For this purpose, he decided to find all integers $ x \ge 0 $ such that there exists an increasing subsequence of the array $ a $ , in which the bitwise XOR of numbers is equal to $ x $ . It didn't take a long time for Korney Korneevich to find all such $ x $ , and he wants to check his result. That's why he asked you to solve this problem! A sequence $ s $ is a subsequence of a sequence $ b $ if $ s $ can be obtained from $ b $ by deletion of several (possibly, zero or all) elements. A sequence $ s_1, s_2, \ldots , s_m $ is called increasing if $ s_1 < s_2 < \ldots < s_m $ .输入输出格式
输入格式
The first line contains a single integer $ n $ ( $ 1 \le n \le 10^6 $ ). The second line contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ 0 \le a_i \le 5000 $ ) — the elements of the array $ a $ .
输出格式
In the first line print a single integer $ k $ — the number of found $ x $ values. In the second line print $ k $ integers in increasing order $ x_1, x_2, \ldots x_k $ ( $ 0 \le x_1 < \ldots < x_k $ ) — found $ x $ values.
输入输出样例
输入样例 #1
4
4 2 2 4
输出样例 #1
4
0 2 4 6
输入样例 #2
8
1 0 1 7 12 5 3 2
输出样例 #2
12
0 1 2 3 4 5 6 7 10 11 12 13