P17303 [ICPC 2026 Xi'an I] Would You Make a Convex?

题目描述

Yuki 是 国际凸多边形锦标赛(International Convex Polygon Championship, ICPC)的裁判长。他为比赛提出了一道几何题。然而,由于他在几何方面经验不足,未能生成正确的凸多边形数据。 为了证明自己的几何能力,Yuki 再次开始玩起了木棍。他有 $n$ 根木棍,第 $i$ 根木棍的长度为 $a_i$。他打算从中选出至少 $3$ 根木棍,使得这些木棍可以组成一个非退化凸多边形$^\ast$。 然而,由于 Yuki 并不了解几何方面的知识,他不知道应该如何选择木棍。作为 Yuki 的好朋友,你需要帮助他找到木棍的一个子集,使得: - 该子集中包含至少 $3$ 根木棍,且包含的木棍数量尽可能多; - Yuki 从该子集中 **任意** 选出至少 $3$ 根木棍,这些木棍都可以组成一个非退化凸多边形。 或报告不存在满足要求的子集。 $^\ast$:所有边长大于零、没有三点共线且所有内角严格小于 $180^\circ$ 的凸多边形被称作非退化凸多边形。

输入格式

本题包含多组测试数据。 第一行包含一个正整数 $t$ $(1 \le t \le 10^5)$,表示测试数据组数。 对于每组测试数据: - 第一行包含一个正整数 $n$ $(3 \le n \le 5\cdot10^5)$。 - 第二行包含 $n$ 个正整数 $a_1, \dots, a_n$ $(1 \le a_i \le 10^9)$。 保证所有测试数据中 $n$ 的总和不超过 $5\cdot10^5$。

输出格式

对于每组测试数据,输出一行: - 若不存在满足要求的子集,则输出一个整数 $0$。 - 若存在满足要求的子集,则先输出一个整数 $k$,表示你找到的子集的大小,再输出 $k$ 个整数 $b_1, \dots, b_k$,表示你找到的子集中的 $k$ 根木棍的长度。

说明/提示

对于第 $1$ 组测试数据: - $\{6,2,6\}$ 为满足要求的子集;由于 $2 + 6 > 6$,这 $3$ 根木棍可以组成一个非退化三角形;容易证明不存在更大的满足要求的子集。 - $\{6,6,9\}$ 同样为满足要求的子集。 对于第 $2$ 组测试数据: - 可以证明不存在满足要求的子集。 对于第 $3$ 组测试数据: - $\{3,4,5,6\}$ 为满足要求的子集;此时 Yuki 有 $\{3,4,5\},\{3,4,6\},\{3,5,6\},\{4,5,6\},\{3,4,5,6\}$ 共 $5$ 种选择木棍的方式,而每种选择方式都可以组成一个非退化凸多边形;容易证明不存在更大的满足要求的子集。 - $\{3,4,5,6,9\}$ 不为满足要求的子集,因为长度为 $3,4,9$ 的木棍无法组成一个非退化三角形。 - $\{3,5,6\}$ 不为满足要求的子集,因为存在更大的满足要求的子集。