CF1582F2.Korney Korneevich and XOR (hard version)
提高+/省选-
通过率:0%
时间限制:1.50s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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, so he wished to experiment with it. For this purpose, he decided to find all integers x≥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 s1,s2,…,sm is called increasing if s1<s2<…<sm.
这是约束条件更大的加强版本。
科尔尼·科尔涅耶维奇构造了一个长度为 n 的数组 a。科尔尼·科尔涅耶维奇最近学习了按位异或(XOR)运算,因此希望对此进行实验。为此,他决定找出所有满足 x≥0 的整数 x,使得数组 a 中存在一个严格递增子序列,其所有元素的按位异或结果恰好等于 x。
科尔尼·科尔涅耶维奇很快便找出了所有这样的 x,现在他想验证自己的结果是否正确。因此,他请你来解决这个问题!
序列 s 是序列 b 的一个子序列,当且仅当 s 可通过从 b 中删除若干(可能为零个或全部)元素而得到。
序列 s1,s2,…,sm 被称为严格递增的,当且仅当 s1<s2<…<sm。
输入格式
The first line contains a single integer n (1≤n≤106).
The second line contains n integers a1,a2,…,an (0≤ai≤5000) — the elements of the array a.
第一行包含一个整数 n(1≤n≤106)。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤5000)——数组 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 x1,x2,…xk (0≤x1<…<xk) — found x values.
第一行输出一个整数 k —— 找到的 x 值的个数。
第二行按升序输出 k 个整数 x1,x2,…,xk(满足 0≤x1<…<xk)—— 找到的 x 值。
输入输出样例
输入#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
说明/提示
In the first test case:
- To get value x=0 it is possible to choose and empty subsequence
- To get value x=2 it is possible to choose a subsequence [2]
- To get value x=4 it is possible to choose a subsequence [4]
- To get value x=6 it is possible to choose a subsequence [2,4]
在第一个测试用例中:
- 要得到值 x=0,可以选择一个空子序列;
- 要得到值 x=2,可以选择子序列 [2];
- 要得到值 x=4,可以选择子序列 [4];
- 要得到值 x=6,可以选择子序列 [2,4]。
输入解题思路,AI测评打分。不知道怎么写?