87pts求助!
查看原帖
87pts求助!
548203
KK_lang楼主2022/10/23 16:48

现在是 87分,最后一个点 T 掉了,就超了一点点,还有可优化空间吗?

#include<bits/stdc++.h>
using namespace std;

const int NR = 20010;
int p[NR];
string s = "", t = "";
bool check(int l, int r)
{
	for (int i = 0; i <= (r - l) / 2 + 1; i++)
		if (t[l + i] != t[r - i]) return false;
	return true;
}
int main()
{
    string temp;
	while (getline(cin, temp)) s += temp, s += '\n';
	int pos = -1;
	for (int i = 0; i < s.size(); i++)
	{
		char c = s[i];
		if ('a' <= c && c <= 'z') c = c -'a' + 'A';
		if ('A' <= c && c <= 'Z') 
		{
			t += c;
			p[++pos] = i;
		}
	}
	int mx = 0, st;
	for (int l = 0; l < t.size(); l++)
		for (int r = l + mx; r < t.size(); r++)
		{
			if (r - l + 1 > 2000) break;
			if (check(l, r)) 
			{
				if (r - l + 1 > mx)
				{
					mx = r - l + 1;
					st = l;
				}
			}
		}
	printf("%d\n", mx);
	for (int i = p[st]; i <= p[st + mx - 1]; i++)
		printf("%c", s[i]);
	return 0;
}

求助大佬!!

2022/10/23 16:48
加载中...