poj 3974

来源:互联网 发布:tensorflow 可以做什么 编辑:程序博客网 时间:2024/06/09 16:47
#include <iostream>#include <cstdio>using namespace std;const int maxn = 1e6+10;char b[maxn], a[maxn<<1];int p[maxn<<1];int main(){    int tcase = 0;    while(scanf("%s", &b[1]) != EOF && b[1] != 'E')    {        int i;        for(i = 1; b[i] != '\0'; i++)        {            a[i<<1] = b[i];            a[(i<<1)+1] = '#';        }        a[0] = '?', a[1] = '#';        int n = i<<1;        int maxl = 0, maxid = 0, id;        for(int i = 1; i < n; i++)        {            if(maxid > i) p[i] = min(p[2*id-i], maxid-i);            else p[i] = 1;            while(a[i-p[i]] == a[i+p[i]]) p[i]++;            if(maxid < i+p[i]) maxid = i+p[i], id = i;            if(maxl < p[i]) maxl = p[i];        }        printf("Case %d: %d\n", ++tcase, maxl-1);    }}