记录编号 414854 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [51nod 1129] 字符串最大值 最终得分 100
用户昵称 GravatarHallmeow 是否通过 通过
代码语言 C++ 运行时间 0.019 s
提交时间 2017-06-15 10:14:00 内存使用 1.80 MiB
显示代码纯文本
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#define pos(i,a,b) for(int i=(a);i<=(b);i++)
#define pos2(i,a,b) for(int i=(a);i>=(b);i--)
#define N 1010000
using namespace std;
char a[N];
int len;
int cnt[N];
int fail[N];
void getfail()
{
     int k=0;
     fail[0]=fail[1]=0;
     pos(i,2,len)
     {
         while(k&&a[k]!=a[i-1])
           k=fail[k];
         if(a[k]==a[i-1])
           k++;
         fail[i]=k;
     }
}
int haha()
{
    freopen("string_maxval.in","r",stdin);
    freopen("string_maxval.out","w",stdout); 
    scanf("%s",a);
    len=strlen(a);
    getfail();
    pos2(i,len,1)
    {
         cnt[i]++;
         cnt[fail[i]]+=cnt[i];
    }
    long long ans=0;
    pos(i,1,len)
    {
       if(i*cnt[i]>ans)
        ans=i*cnt[i];
    }
    printf("%lld",ans);
    //while(1);
    return 0;
}
int sb=haha();
int main()
{;
}