C0471 [APIO2014-A]回文串

内存限制:256 MB 时间限制:1000 ms

题目描述

给你一个由小写拉丁字母组成的字符串 $s$。我们定义 $s$ 的一个子串的存在值为这个子串在 $s$ 中出现的次数乘以这个子串的长度。

对于给你的这个字符串 $s$,求所有回文子串中的最大存在值。

输入格式

一行,一个由小写拉丁字母(a~z)组成的非空字符串 $s$。

输出

输出一个整数,表示所有回文子串中的最大存在值。

样例

样例输入 1

abacaba

样例输出 1

7

样例输入 2

www

样例输出 2

4

提示

【样例1解释】

用 $|s|$ 表示字符串 s 的长度。

一个字符串 $s_1s_2...s_{|s|}$ 的子串是一个非空字符串 $s_is_{i+1}...s_j$,其中 $1≤i≤j≤|s|$。每个字符串都是自己的子串。

一个字符串被称作回文串当且仅当这个字符串从左往右读和从右往左读都是相同的。

这个样例中,有 7 个回文子串 a,b,c,aba,aca,bacab,abacaba。他们的存在值分别为 4,2,1,6,3,5,7。

所以回文子串中最大的存在值为 7。

【数据规模与约定】(comet 不支持APIO评分方式)

第一个子任务(测试点1-10)共 8 分,满足 $1≤|s|≤100$。
第二个子任务(测试点11-20)共 15 分,满足 $1≤|s|≤1000$。
第三个子任务(测试点21-30)共 24 分,满足 $1≤|s|≤10000$。
第四个子任务(测试点31-40)共 26 分,满足 $1≤|s|≤100000$。
第五个子任务(测试点41-50)共 27 分,满足 $1≤|s|≤300000$。