304871: CF925C. Big Secret
Memory Limit:256 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Big Secret
题意翻译
Vitya了解到生命,宇宙和一终极问题答案不是5442,而是递增序列$a_1$,...$a_n$ 为了不必需要时提前揭露答案,她把答案加密了,用如下方法得到序列$b_1$,...$b_n$: - $b_1=a_1$ - $b_i=a_i⊕a_{i-1}$(i从2~n,x⊕y是x和y的位向异或) 容易看出,原序列可由$a_i=b_1⊕...⊕b_i$得到。 一段时间后,Vitya发现密码序列中整数$b_i$被洗牌了,然后破解时原序列可以不递增。为了挽救自己在科学界的名誉,她打算找整数排列$b_i$使原序列仍然严格递增。请帮他找到这样的序列。题目描述
Vitya has learned that the answer for The Ultimate Question of Life, the Universe, and Everything is not the integer 54 42, but an increasing integer sequence $ a_1, \ldots, a_n $ . In order to not reveal the secret earlier than needed, Vitya encrypted the answer and obtained the sequence $ b_1, \ldots, b_n $ using the following rules: - $ b_1 = a_1 $ ; - $ b_i = a_i \oplus a_{i - 1} $ for all $ i $ from 2 to $ n $ , where $ x \oplus y $ is the [bitwise XOR](https://en.wikipedia.org/wiki/Bitwise_operation#XOR) of $ x $ and $ y $ . It is easy to see that the original sequence can be obtained using the rule $ a_i = b_1 \oplus \ldots \oplus b_i $ . However, some time later Vitya discovered that the integers $ b_i $ in the cypher got shuffled, and it can happen that when decrypted using the rule mentioned above, it can produce a sequence that is not increasing. In order to save his reputation in the scientific community, Vasya decided to find some permutation of integers $ b_i $ so that the sequence $ a_i = b_1 \oplus \ldots \oplus b_i $ is strictly increasing. Help him find such a permutation or determine that it is impossible.输入输出格式
输入格式
The first line contains a single integer $ n $ ( $ 1 \leq n \leq 10^5 $ ). The second line contains $ n $ integers $ b_1, \ldots, b_n $ ( $ 1 \leq b_i < 2^{60} $ ).
输出格式
If there are no valid permutations, print a single line containing "No". Otherwise in the first line print the word "Yes", and in the second line print integers $ b'_1, \ldots, b'_n $ — a valid permutation of integers $ b_i $ . The unordered multisets $ \{b_1, \ldots, b_n\} $ and $ \{b'_1, \ldots, b'_n\} $ should be equal, i. e. for each integer $ x $ the number of occurrences of $ x $ in the first multiset should be equal to the number of occurrences of $ x $ in the second multiset. Apart from this, the sequence $ a_i = b'_1 \oplus \ldots \oplus b'_i $ should be strictly increasing. If there are multiple answers, print any of them.
输入输出样例
输入样例 #1
3
1 2 3
输出样例 #1
No
输入样例 #2
6
4 7 7 12 31 61
输出样例 #2
Yes
4 12 7 31 7 61