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

    ID: 19713 远端评测题 1000ms 512MiB 尝试: 26 已通过: 11 显示难度普及+/提高− 上传者: 标签>贪心二分Special Judge排序ICPC2026双指针 two-pointer省赛/邀请赛西安

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

题目描述

Yuki 是 国际凸多边形锦标赛(International Convex Polygon Championship, ICPC)的裁判长。他为比赛提出了一道几何题。然而,由于他在几何方面经验不足,未能生成正确的凸多边形数据。

为了证明自己的几何能力,Yuki 再次开始玩起了木棍。他有 nn 根木棍,第 ii 根木棍的长度为 aia_i。他打算从中选出至少 33 根木棍,使得这些木棍可以组成一个非退化凸多边形^\ast

然而,由于 Yuki 并不了解几何方面的知识,他不知道应该如何选择木棍。作为 Yuki 的好朋友,你需要帮助他找到木棍的一个子集,使得:

  • 该子集中包含至少 33 根木棍,且包含的木棍数量尽可能多;
  • Yuki 从该子集中 任意 选出至少 33 根木棍,这些木棍都可以组成一个非退化凸多边形。

或报告不存在满足要求的子集。

^\ast:所有边长大于零、没有三点共线且所有内角严格小于 180180^\circ 的凸多边形被称作非退化凸多边形。

输入格式

本题包含多组测试数据。

第一行包含一个正整数 tt (1t105)(1 \le t \le 10^5),表示测试数据组数。

对于每组测试数据:

  • 第一行包含一个正整数 nn (3n5105)(3 \le n \le 5\cdot10^5)
  • 第二行包含 nn 个正整数 a1,,ana_1, \dots, a_n (1ai109)(1 \le a_i \le 10^9)

保证所有测试数据中 nn 的总和不超过 51055\cdot10^5

输出格式

对于每组测试数据,输出一行:

  • 若不存在满足要求的子集,则输出一个整数 00
  • 若存在满足要求的子集,则先输出一个整数 kk,表示你找到的子集的大小,再输出 kk 个整数 b1,,bkb_1, \dots, b_k,表示你找到的子集中的 kk 根木棍的长度。
3
4
6 9 2 6
3
4 4 9
6
3 1 4 6 5 9
3 6 2 6
0
4 3 4 5 6

提示

对于第 11 组测试数据:

  • {6,2,6}\{6,2,6\} 为满足要求的子集;由于 2+6>62 + 6 > 6,这 33 根木棍可以组成一个非退化三角形;容易证明不存在更大的满足要求的子集。
  • {6,6,9}\{6,6,9\} 同样为满足要求的子集。

对于第 22 组测试数据:

  • 可以证明不存在满足要求的子集。

对于第 33 组测试数据:

  • {3,4,5,6}\{3,4,5,6\} 为满足要求的子集;此时 Yuki 有 $\{3,4,5\},\{3,4,6\},\{3,5,6\},\{4,5,6\},\{3,4,5,6\}$ 共 55 种选择木棍的方式,而每种选择方式都可以组成一个非退化凸多边形;容易证明不存在更大的满足要求的子集。
  • {3,4,5,6,9}\{3,4,5,6,9\} 不为满足要求的子集,因为长度为 3,4,93,4,9 的木棍无法组成一个非退化三角形。
  • {3,5,6}\{3,5,6\} 不为满足要求的子集,因为存在更大的满足要求的子集。