CF1991C.Absolute Zero
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你会得到一个n整数的数组a。
在一个操作中,您将执行以下两步移动:
1.选择一个整数x(0≤x≤109)。
2.将每个ai替换为∣ai−x∣,其中∣v∣表示绝对值v。
例如,通过选择x=8,数组[5,7,10]将变为[∣5−8∣,∣7−8∣,∣10−8∣]=[3,1,2]。
构造一个操作序列,使a的所有元素在最多40的操作中等于0,或者确定这是不可能的。您不需要减少操作次数
输入格式
每个测试包含多个测试用例。第一行包含一个整数t(1≤t≤104)——测试用例的数量。测试用例的描述如下。
每个测试用例的第一行包含一个整数n(1≤n≤2⋅105)——数组的长度a。
每个测试用例的第二行包含n整数a1,a2,…,an(0≤ai≤109)——数组a的元素。
保证所有测试用例中n的总和不超过2⋅105。
输出格式
对于每个测试用例,如果不可能在最多40的操作中使所有数组元素都等于0,则输出一个整数−1。
否则,输出两行。输出的第一行应包含一个整数k(0≤k≤40)——操作数。第二行输出应包含k个整数x1,x2,…,xk(0≤xi≤109)——操作序列,表示在第i次操作中,您选择了x=xi。
如果有多个解决方案,请输出其中任何一个。
您不需要减少操作次数。
输入输出样例
输入#1
5 1 5 2 0 0 3 4 6 8 4 80 40 20 10 5 1 2 3 4 5
输出#1
1 5 0 3 6 1 1 7 60 40 20 10 30 25 5 -1
说明/提示
在第一个测试用例中,我们只能通过选择x=5执行一个操作,将数组从[5]更改为[0]。
在第二个测试用例中,不需要任何操作,因为数组的所有元素都已经是0了。
在第三个测试用例中,我们可以选择x=6将数组从[4,6,8]更改为[2,0,2],然后选择x=1将其更改为[1,1,1],最后再次选择x=1.将数组更改为[0,0,0]。
在第四个测试用例中,我们可以按照操作序列(60,40,20,10,30,25,5)使所有元素都为0。
在第五个测试用例中,可以证明,在最多40的操作中,不可能使所有元素都为0。因此,输出为−1。
输入解题思路,AI测评打分。不知道怎么写?