改了之后后面都是tle,有优化的方法吗
``` cpp
#include<iostream>
#include<string>
using namespace std;
const int p=13;
unsigned long long a[1000001],b[1000001];
bool check(string s){
int len=s.length();
int m=len/2;
string s1=s.substr(0,m),s2=s.substr(m);
for(int i=0;i<s1.size();i++)a[i+1]=a[i]*p+s1[i];
for(int i=0;i<s2.size();i++)b[i+1]=b[i]*p+s2[i];
if(a[s1.size()]==b[s2.size()])return true;
else return false;
}
int main(){
int n,cnt=0;
cin>>n;
string str,s,t;
cin>>str;
if(n%2==0){cout<<"NOT POSSIBLE";return 0;}
for(int i=0;i<n;i++){
string x=str.substr(i,1);
str.erase(i,1);
if(check(str)){s=str.substr(0,str.length()/2);cnt++;}
str.insert(i,x);
if(cnt==2&&x!=t){cout<<"NOT UNIQUE";return 0;}
t=x;
}if(cnt==1)cout<<s;
else if(cnt==0) cout<<"NOT POSSIBLE";
else cout<<s;
}
```
by godess @ 2024-03-27 18:03:11