CF1157F Maximum Balanced Circle

题目描述

有 $n$ 个人站成一排,第 $i$ 个人的身高为 $a_i$。你可以选择这些人中的任意一个子集,并尝试将他们排列成一个平衡圆圈。 一个平衡圆圈指的是这样一种排列方式:任意相邻两个人的身高差不超过 $1$。例如,设被选中的人的身高为 $[a_{i_1}, a_{i_2}, \dots, a_{i_k}]$,其中 $k$ 是你选择的人数。那么对于所有 $j$ 从 $1$ 到 $k-1$,都应满足 $|a_{i_j} - a_{i_{j+1}}| \le 1$,同时还要满足 $|a_{i_1} - a_{i_k}| \le 1$。其中 $|x|$ 表示 $x$ 的绝对值。显然,仅有一个人的圆圈也是平衡的。 你的任务是选择最多的人,并构造一个包含所有被选中人的平衡圆圈。显然,只有一个人的圆圈总是平衡的,因此答案一定存在。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示人数。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 2 \cdot 10^5$),其中 $a_i$ 表示第 $i$ 个人的身高。

输出格式

输出的第一行包含一个整数 $k$,表示最大平衡圆圈中的人数。 第二行输出 $k$ 个整数 $res_1, res_2, \dots, res_k$,其中 $res_j$ 表示最大平衡圆圈中第 $j$ 个人的身高。对于所有 $j$ 从 $1$ 到 $k-1$,都应满足 $|res_{j} - res_{j+1}| \le 1$,同时还要满足 $|res_{1} - res_{k}| \le 1$。

说明/提示

由 ChatGPT 4.1 翻译