CF2077D.Maximum Polygon
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的数组 a,确定字典序最大的 ∗ 子序列 † s,使得 s 可以作为多边形的边长。
当且仅当 ∣s∣≥3 且满足以下条件时,s 可以作为多边形的边长:
2⋅max(s1,s2,…,s∣s∣)<s1+s2+…+s∣s∣.
如果不存在这样的子序列 s,输出 −1。
∗ 序列 x 的字典序小于序列 y,当且仅当以下条件之一成立:
- x 是 y 的前缀,但 x=y;
- 在 x 和 y 第一个不同的位置,x 的元素小于 y 中对应的元素。
† 序列 x 是序列 y 的子序列,当且仅当 x 可以通过从 y 中删除若干(可能为零或全部)元素得到。
输入格式
每个测试包含多个测试用例。第一行输入测试用例的数量 t(1≤t≤104)。接下来描述每个测试用例。
每个测试用例的第一行输入一个整数 n(3≤n≤2⋅105)——数组 a 的长度。
第二行输入 n 个整数 a1,a2,…,an(1≤ai≤109)——数组 a。
保证所有测试用例的 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,按以下格式输出答案:
如果存在答案,按以下格式输出:
第一行输出整数 k(1≤k≤n)——子序列 s 的长度。
第二行输出 k 个整数 s1,s2,…,sk(1≤si≤109,s 是 a 的子序列)——子序列 s。注意输出的是元素值,而非下标。
否则,输出一行整数 −1。
输入输出样例
输入#1
5 3 3 1 2 4 1 4 2 3 6 1 6 4 5 3 2 6 43 12 99 53 22 4 7 9 764 54 73 22 23 1
输出#1
-1 3 4 2 3 4 6 5 3 2 5 43 99 53 22 4 4 54 73 23 1
说明/提示
在第一个测试用例中,不存在可以作为多边形边长的子序列。
在第二个测试用例中,有两个可以作为多边形边长的子序列:1,4,2,3 和 4,2,3。后者是字典序更大的子序列。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?