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); }}