#XCPC005. Would You Make a Convex?

Would You Make a Convex?

题目描述

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

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

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

  • 该子集中包含至少 33 根木棍,且包含的木棍数量尽可能多;

  • 江月诗 从该子集中任意选出至少 33 根木棍,这些木棍都可以组成一个非退化凸多边形。

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

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

输入格式

本题包含多组测试数据。

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

对于每组测试数据:

  • 第一行包含一个正整数 n (3n5105)n\ (3 \le n \le 5 \cdot 10^5)

  • 第二行包含 nn 个正整数 a1,a2,,an (1ai109)a_1, a_2, \dots, a_n\ (1 \le a_i \le 10^9)

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

输出格式

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

  • 若不存在满足要求的子集,则输出一个整数 00

  • 若存在满足要求的子集,则先输出一个整数 kk,表示你找到的子集的大小,再输出 kk 个整数 b1,,bkb_1, \dots, b_k,表示你找到的子集中的木棍的长度。

3
3
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

说明/提示

  • 对于第 1 组测试数据:

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

    • 6,6,9{6, 6, 9} 同样为满足要求的子集。

  • 对于第 2 组测试数据:

    • 可以证明不存在满足要求的子集。
  • 对于第 3 组测试数据:

    • 3,4,5,6{3, 4, 5, 6} 为满足要求的子集;此时 江月诗 有 3,4,5,3,4,6,3,5,6,4,5,6,3,4,5,6{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} 不为满足要求的子集,因为存在更大的满足要求的子集。