为什么RE
查看原帖
为什么RE
704668
WZWZWZWY楼主2023/9/10 19:37

错的测试点居然就是样例……

#include <iostream>
using namespace std;

char c[20005];
char yc[20005];
int n, cnt, p[20005], ans,ansl,ansr;

void read(){
	char c1= '`';
	while(c1 != '\n') {
		c1 = getchar();
		yc[++n] = c1;
		if (c1 >= 'a' && c1 <= 'z') 
			c[++cnt] = c1, p[cnt] = n;
		else if (c1 >= 'A' && c1 <= 'Z')
			c[++cnt] = c1-'A'+'a', p[cnt]=n;
	}
}

void little_manacher(){
	for (int i = 1; i <= cnt; i++){
		int l = i, r = i;
		while(l >= 1 && r <= cnt && c[l] == c[r]){l--;r++;}
		if (r-l-1 > ans) {//-1是因为(r-1)-(l+1)+1 
			ans = r-l-1;
			ansl = l+1; ansr = r-1;
		}
	}
}

int main(){
	read();
	little_manacher();
	cout << ans << "\n";
	for (int i = p[ansl]; i <= p[ansr]; i++) cout << yc[i];
}
2023/9/10 19:37
加载中...