CF977F Consecutive Subsequence

题目描述

给定一个长度为 $n$ 的整数数组。 你需要从该数组中选择一个最长的子序列,使得该子序列是一个递增的连续整数序列。换句话说,所需的序列应等于 $[x, x + 1, \dots, x + k - 1]$,其中 $x$ 为某个整数,$k$ 为长度。 数组的子序列可以通过删除一些(可能为零)元素得到。你可以删除任意元素,不必连续删除。剩下的元素保持原有顺序。例如,对于数组 $[5, 3, 1, 2, 4]$,以下数组是它的子序列:$[3]$,$[5, 3, 1, 2, 4]$,$[5, 1, 4]$,但 $[1, 3]$ 不是它的子序列。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示数组的长度。第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$),表示数组本身。

输出格式

第一行输出 $k$,即所求最长子序列的长度,该子序列为递增的连续整数序列。 第二行输出该最长子序列在原数组中的任意一种下标序列。

说明/提示

第一个样例的所有合法答案(作为下标序列): - $[1, 3, 5, 6]$ - $[2, 3, 5, 6]$ 第二个样例的所有合法答案: - $[1, 4]$ - $[2, 5]$ - $[3, 6]$ 第三个样例的所有合法答案: - $[1]$ - $[2]$ - $[3]$ - $[4]$ 第四个样例的所有合法答案: - $[1, 2, 3, 7, 8, 9]$ 由 ChatGPT 4.1 翻译