CF2077D.Maximum Polygon

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个长度为 nn 的数组 aa,确定字典序最大的 ∗^{\text{∗}} 子序列 †^{\text{†}} ss,使得 ss 可以作为多边形的边长。

当且仅当 ∣s∣≥3|s| \geq 3 且满足以下条件时,ss 可以作为多边形的边长:

2⋅max⁡(s1,s2,…,s∣s∣)<s1+s2+…+s∣s∣.2 \cdot \max(s_1, s_2, \ldots, s_{|s|}) < s_1 + s_2 + \ldots + s_{|s|}.

如果不存在这样的子序列 ss,输出 −1-1。

∗^{\text{∗}} 序列 xx 的字典序小于序列 yy,当且仅当以下条件之一成立:

  • xx 是 yy 的前缀,但 x≠yx \neq y;
  • 在 xx 和 yy 第一个不同的位置,xx 的元素小于 yy 中对应的元素。

†^{\text{†}} 序列 xx 是序列 yy 的子序列,当且仅当 xx 可以通过从 yy 中删除若干(可能为零或全部)元素得到。

输入格式

每个测试包含多个测试用例。第一行输入测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来描述每个测试用例。

每个测试用例的第一行输入一个整数 nn(3≤n≤2⋅1053 \leq n \leq 2 \cdot 10^5)——数组 aa 的长度。

第二行输入 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9)——数组 aa。

保证所有测试用例的 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,按以下格式输出答案:

如果存在答案,按以下格式输出:

第一行输出整数 kk(1≤k≤n1 \leq k \leq n)——子序列 ss 的长度。

第二行输出 kk 个整数 s1,s2,…,sks_1, s_2, \ldots, s_k(1≤si≤1091 \leq s_i \leq 10^9,ss 是 aa 的子序列)——子序列 ss。注意输出的是元素值,而非下标。

否则,输出一行整数 −1-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,31, 4, 2, 3 和 4,2,34, 2, 3。后者是字典序更大的子序列。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页