RE求助
查看原帖
RE求助
164294
Oct0pus楼主2021/4/8 20:49

rt,数组开够了,为什么RE

#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
const int L=1.1e7+100;
char dat[L<<1];
int p[L<<1],cnt,ans;
int main(){
	dat[0]='~';dat[1]='#';cnt=1;
	char c;
	while(c<'a' || c>'z')c=getchar();
	while(c!=EOF){
		dat[++cnt]=c;
		dat[++cnt]='#';
		c=getchar();
	}
	int r=0,mid=0;
	for(int i=1;i<=cnt;i++){
		if(i<=r)p[i]=min(p[mid/2-i],r-i+1);
		while(dat[i-p[i]]==dat[i+p[i]])++p[i];
		if(p[i]+i>r){
			r=p[i]+i-1;
			mid=i;
		}
		ans=max(ans,p[i]);
	}
	printf("%d",ans-1);
	return 0;
}

2021/4/8 20:49
加载中...