CF30E Tricky and Clever Password
题目描述
在他年幼的时候,我们故事的主人公——Copa 国王——发现自己私有数据的隐藏方式还不够安全,这对于国王来说是不可接受的。因此,他发明了一个巧妙而复杂的密码(后来他发现这个密码其实是一个奇数长度的回文串),并用它对所有数据进行了加密。
Copa 害怕自己会忘记密码,于是决定把密码写在纸上。但他也知道这样做不安全,所以他用如下方式进行了加密:他把密码开头和结尾各剪掉 $x$ 个字符($x$ 可以为 $0$,且 $2x$ 严格小于密码长度)。他得到了密码的三个部分。我们称其为 $\mathit{prefix}$、$\mathit{middle}$ 和 $\mathit{suffix}$,其中 $\mathit{prefix}$ 和 $\mathit{suffix}$ 长度相等,$\mathit{middle}$ 总是奇数长度。然后,他用这三部分拼成了一个新的字符串:$A+\mathit{prefix}+B+\mathit{middle}+C+\mathit{suffix}$,其中 $A$、$B$、$C$ 是 Copa 随意拼接(可能为空)的字符串,"$+$" 表示连接操作。
许多年过去了,直到昨天 Copa 国王才偶然发现了这张写有密码加密方式的纸条。密码以及$A$、$B$、$C$的内容,他都已完全忘记。现在,他请你帮他找出可能被他发明、加密并写下纸条上的最长的密码。
输入格式
输入包含一个只由小写英文字母组成的字符串,长度为 $1$ 到 $10^5$。
输出格式
第一行输出一个整数 $k$,表示你答案中密码的非空部分的数量($k\in\{1,2,3\}$)。接下来的 $k$ 行,每行输出两个整数 $x_{i}$ 和 $l_{i}$,分别表示该部分在输入字符串中的起始位置和长度。按照 $x_{i}$ 升序输出。每组数之间用一个空格隔开。
起始位置 $x_{i}$ 应为 $1$ 到输入字符串长度之间的整数。所有 $l_{i}$ 必须为正数,也就是说,你只能输出非空部分。中间部分必须是奇数长度。
如果有多组答案,输出任意一组都可以。注意,你的目标是最大化 $l_{i}$ 的和,而不是最大化 $k$。
说明/提示
由 ChatGPT 5 翻译