A3886 「COI 2025」Korupcija

暂无评定 传统题 COI(克罗地亚) 上传者
时间限制1000ms
内存限制512MiB
通过 / 提交0/0

A3886「COI 2025」Korupcija

暂无评定 传统题 COI(克罗地亚) 上传者
时间限制1000ms
内存限制512MiB
通过 / 提交0/0

题目描述

译自 COI 2025 T3「Korupcija」

“……腐败属于所有人,而不仅仅属于他们。我提供腐败、腐败的秩序、工作和增长。这些大师们向你们承诺的一切,我加倍提供。我还建议设立第八格:给谁?多少钱?……”

小米尔科被电视上那位叔叔的演讲迷住了。他深信自己理解了其中的信息:他必须「腐败」掉他二进制数的比特位。

米尔科观察着数字 0,1,…,2N−10, 1, \ldots, 2^{N}-1(视为具有 NN 个二进制位的二进制数)。在腐败欲望的驱使下,米尔科会选择两个仅在一个比特位上不同的数字 XX 和 YY (0≤X,Y<2N)(0 \leq X, Y < 2^{N})。然后,米尔科会用符号 ?\texttt{?} 覆盖掉数字 XX 和 YY 中那个不同的比特位,从而实现腐败:数字 XX 和 YY 将变得无法区分。米尔科将对剩下的数字重复此过程,直到最终得到总共 2N−12^{N-1} 对无法区分的数字。因此,每个介于 00 和 2N−12^{N}-1 之间的数字都恰好属于一个数对,并且两个数字能配成一对的唯一条件是它们恰好在一个比特位(二进制位)上不同。

为了增加挑战,米尔科决定,对于 i=0,1,…,N−1i=0, 1, \ldots, N-1,他希望符号 ?\texttt{?} 出现在第 ii 个比特位上的数对恰好有 aia_{i} 对。在这里,我们从最低有效位到最高有效位对比特位进行计数,因此第 ii 个比特位对应的值是 2i2^{i}。请帮助米尔科,构建一个满足所要求条件的配对方案,或者判断这样的方案不存在。

输入格式

第一行是一个自然数 NN,来自题目描述。

第二行是一个包含 NN 个非负整数的序列 aia_{i},对于 i=0,…,N−1i=0, \ldots, N-1,其中 aia_{i} 代表在第 ii 个比特位上不同的所要求数对数量。这些数字的总和恰好是 2N−12^{N-1}。

输出格式

如果无法构建满足题目条件的配对方案,则在唯一的一行中输出 −1-1。

否则,输出 2N−12^{N-1} 行。每行输出两个用空格隔开的数字 XX 和 YY,代表一个选定的数对。你可以按任何顺序输出这些数对。

如果存在多种解,输出任意一种即可。

2
2 0

0 1
2 3

2
1 1

-1

3
2 0 2

0 1
2 6
3 7
4 5

数据范围与提示

对于所有输入数据,满足 1≤N≤201 \leq N \leq 20。

在每个子任务中,20%20\% 的分数仅来自于判断是否存在满足题目条件的配对方案。对于这部分分数,如果答案不为 −1-1,你需要输出某个配对方案,但它不必满足所要求的条件。

子任务 分值 附加限制
11 1515 N≤4N \leq 4
22 1515 满足 N≥2N \geq 2 且对于所有 i>2i > 2 都有 ai=0a_i = 0。
33 2020 N≤6N \leq 6
44 5050 无附加限制。