记录编号 364334 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [51nod 1129] 字符串最大值 最终得分 100
用户昵称 Gravatarsxysxy 是否通过 通过
代码语言 C++ 运行时间 0.085 s
提交时间 2017-01-16 08:24:10 内存使用 8.87 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 1000002
char s[MAXN];
int f[MAXN], g[MAXN];
int main()
{
    freopen("string_maxval.in", "r", stdin);
    freopen("string_maxval.out", "w", stdout);
    scanf("%s", s);
    int n = strlen(s);
    for(int i = 1; i < n; i++)
    {
        int j = f[i];
        while(j && s[i] != s[j])j = f[j];
        f[i+1] = (s[i] == s[j])? j+1:0;
    }
    long long ans = 0;
    for(int i = n; i; i--)
    {
        g[i]++;
        g[f[i]] += g[i];
        ans = max(ans, 1ll*i*g[i]);
    }
    printf("%lld\n", ans);
    return 0;
}