CF1991B.AND Reconstruction

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 $ n - 1 $ 个整数组成的数组 $ b $。

一个数组 $ a $ 被称为是“好的”当且仅当对于 $ 1 \le i \le n-1 $,都有 $ b_i = a_i , & , a_{i + 1} $ 其中$ & $ 表示按位与运算。

你的任务是构造一个“好的”数组,或输出 -1 表示不存在“好的”数组。

输入格式

有多组数据。第一行是一个整数 $ t $ ( $ 1 \le t \le 10^4 $ ),表示数据组数。

每组数据的第一行有一个正整数 $ n $ ( $ 2 \le n \le 10^5 $ ),表示数组 $ a $ 的长度

第二行有 $ n - 1 $ 个整数, $ b_1, b_2, \ldots, b_{n - 1} $ ( $ 0 \le b_i < 2^{30} $ ),表示 $ b $ 数组。

保证所有数据中 $ n $ 的和不超过 $ 10^5 $。

输出格式

对于每组数据,若不存在“好的”数组输出 -1。

否则输出 $ n $ 个用空格分隔的整数 $ a_1, a_2, \ldots, a_n $ ( $ 0 \le a_i < 2^{30} $ ) 表示一个“好的”数组。

若有多种方案,输出任意一种都可。

输入输出样例

  • 输入#1

    4
    2
    1
    3
    2 0
    4
    1 2 3
    5
    3 5 4 2

    输出#1

    5 3
    3 2 1
    -1
    3 7 5 6 3

说明/提示

对于第一组样例,$ b = [1] $。一个可能的"好的"数组是 $ a=[5, 3] $。因为 $ a_1 , & , a_2 = 5 , & , 3 = 1 = b_1 $。

对于第二组样例,$ b = [2, 0] $。一个可能的"好的"数组是 $ a=[3, 2, 1] $。因为 $ a_1 , & , a_2 = 3 , & , 2 = 2 = b_1 $ and $ a_2 , & , a_3 = 2 , & , 1 = 0 = b_2 $。

对于第三组样例,$ b = [1, 2, 3] $。可以证明不存在"好的"数组,所以输出 -1。

对于第四组样例,$ b = [3, 5, 4, 2] $。一个可能的"好的"数组是 $ a=[3, 7, 5, 6, 3] $。

输入解题思路,AI测评打分。不知道怎么写?

首页