记录编号 |
364334 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[51nod 1129] 字符串最大值 |
最终得分 |
100 |
用户昵称 |
sxysxy |
是否通过 |
通过 |
代码语言 |
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;
}