CF19C Deletion of Repeats

题目描述

有一天,Bob 看到了一个字符串。该字符串包含了许多不同的字母,但这些字母都用数字来表示,并且每种字母在字符串中最多出现 10 次。Bob 不喜欢这个字符串,因为里面有“重复段”:长度为 $x$ 的重复段是指一个长度为 $2x$ 的子串,其前一半和后一半字符一一对应完全相同。Bob 决定删掉所有的重复段。他的操作方式如下:只要仍有重复段存在,Bob 就选择最短的重复段;如果有多个最短的,他选择最左边的一个,然后删除这个重复段的左半部分及其左边的所有内容。 给定 Bob 看到的字符串,请你找出在按照上述规则删除所有重复段后,字符串会变成什么样子。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示字符串的长度。 第二行包含 $n$ 个用空格分隔的整数,每个整数在 $0$ 到 $10^9$ 之间,表示字符串中的字母。保证每种字母在字符串中最多出现 10 次。

输出格式

第一行输出经过删除操作后剩余字符串的长度。 第二行输出剩余字符串中的所有字母(数字),用空格隔开。

说明/提示

由 ChatGPT 5 翻译