#P17367. [ECNA 2023] A Pivotal Question

[ECNA 2023] A Pivotal Question

题目描述

快速排序是 Tony Hoare 于 1959 年提出的一种递归排序算法。其中一个主要步骤是“划分”:给定数组中的一个元素 pp 作为枢轴,把数组重新排列成

XL, p, XR,X_L,\ p,\ X_R,

使 XLX_L 中所有值都不大于 pp,XRX_R 中所有值都大于 pp。

例如,数组以 1313 为枢轴完成划分后,可以把所有不大于 1313 的元素放在它左侧,所有大于 1313 的元素放在右侧。注意,XLX_L 和 XRX_R 内部通常没有排序,并且其中任意一个都可以为空。

如何执行划分、如何选择枢轴,都是很有意思但与本题无关的问题。给定一个数组,假设它已经完成某次划分,请找出其中所有可能作为枢轴值的元素;如果数组不可能是划分后的结果,也要据此作答。

输入格式

输入首先给出一个正整数 nn(1≤n≤1061\le n\le 10^6),表示数组大小;随后给出 nn 个正整数,表示数组中的值。所有值互不相同,且不超过 10610^6。

输出格式

先输出整数 mm,表示数组中可能作为划分枢轴的值的数量;随后按这些值在输入中的出现顺序输出它们。如果 m>100m>100,只输出前 100100 个枢轴值。m=0m=0 表示数组不是任何一次合法划分后的结果。

10 1 11 8 13 53 20 63 99 79 94
3 1 13 63