Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int manaker(string s, int n){
- vector <int> p(n);
- int c=0;
- int l=0;
- for (int i=0; i<n; i++){
- while (i-p[i]>0 && s[i-p[i]-1]==s[i+p[i]+1]){
- ++p[i];
- }
- }
- int maximum=0;
- for (int i=0; i<n; i++){
- if(i%2==1){
- if(2*(p[i]/2)+1>maximum){
- maximum=2*(p[i]/2)+1;
- }
- }
- else{
- if (2*(p[i]/2)>maximum){
- maximum=2*(p[i]/2);
- }
- }
- }
- return maximum;
- }
- int main(){
- int n;
- cin>>n;
- string s;
- cin>>s;
- string c;
- for (int i=0; i<2*n+1; i++){
- if(i%2==1){
- int x=i/2;
- c.push_back(s[x]);
- }else{
- c.push_back('.');
- }
- }
- int answer=manaker(c, 2*n+1);
- for (int i=1; i<2*n+1; i+=2){
- for (int j=1; j<2*n+1; j+=2){
- string k=c;
- k[i]=c[j];
- if (manaker(k, 2*n+1)>answer){
- answer=manaker(k, 2*n+1);
- }
- }
- }
- cout<<answer<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement