#2141. 2的幂次 / poweroftwo

2的幂次 / poweroftwo

2的幂次 / poweroftwo

题目描述

给你一个长度为n的序列 a1,a2,ana_1,a_2,…a_n ,问最多可以从中选出多少个数,使得选出来的数两两之间的差值都是2的幂次。要求输出个数和从小到大输出选了哪些数,如果在选出的数最多的情况下有多种方案,输出字典序最小的那一种。

假设数列A和B长度都为n,数列A的字典序比数列B的字典序小当且仅当存在1≤i≤n,使得当j<i时 Aj=BjA_j=B_j Ai<BiA_i<B_i

输入格式

第一行是一个正整数n,表示数列n的长度。

接下里一行n个数 a1,a2,ana_1,a_2,…a_n

输出格式

第一行输出一个整数m,表示最多可以选m个数且满足上述条件。

第二行输出m个整数,表示你所选的m个数。如果有多种方案,输出字典序最小的那种。

输入输出样例

样例1 输入

5
1 2 3 4 5 

样例1 输出

3
1 2 3

样例2 输入

4
-2 6 10 12

样例2 输出

2
-2 6

测试点数据范围

#1 - #3:1n15,ai10001≤n≤15,|a_i|≤1000;

#4 - #6:1n1000,ai1091≤n≤1000,|a_i|≤10^9;

#7 - #10:1n105,ai1091≤n≤10^5,|a_i|≤10^9