#P32. [KBC001Ex] Distance

[KBC001Ex] Distance

版权声明

本题搬运自 Long Long OJ,版权归 Codeforces 所有。

题目来源:https://codeforces.com/group/JESCgZZ8qn/contest/333999/problem/T

题目描述

给你 nn 个数轴上的点 x1xnx_1\sim x_n,问最多可以选出多少个点,使得它们之间两两之间的距离2k2^kkk 为非负整数)。

换句话说,你需要选择尽可能多的点 xi1,xi2,,ximx_{i_1}, x_{i_2}, \dots, x_{i_m},使得对于每一对点 xijx_{i_j}xikx_{i_k},都满足 xijxik=2d|x_{i_j} - x_{i_k}| = 2^d,其中 dd 是非负整数(不一定对于每一对点都相同)。

输入格式

第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)—— 点的数量。

第二行包含 nn 个两两不同的整数 x1,x2,,xnx_1, x_2, \dots, x_n109xi109-10^9 \le x_i \le 10^9)—— 点的坐标。

输出格式

第一行输出 mm —— 所选子集满足上述条件的最大可能点数。

第二行输出 mm 个整数 —— 你选择的子集中点的坐标。

如果存在多个答案,输出其中任意一个。

样例

6
3 5 4 7 10 12
3
7 3 5
5
-1 2 5 8 11
1
8

样例 1 解释

答案是 [7,3,5][7,3,5]73=4=22|7-3|=4=2^275=2=21|7-5|=2=2^135=2=21|3-5|=2=2^1

[4,3,5][4,3,5] 也是一个合法的答案。然而,你无法找到更多满足要求的点构成的子集。