Advertisement
ekzolot

Untitled

Apr 22nd, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int manaker(string s, int n){
  5.     vector <int> p(n);
  6.     int c=0;
  7.     int l=0;
  8.     for (int i=0; i<n; i++){
  9.         while (i-p[i]>0 && s[i-p[i]-1]==s[i+p[i]+1]){
  10.             ++p[i];
  11.         }
  12.     }
  13.     int maximum=0;
  14.     for (int i=0; i<n; i++){
  15.         if(i%2==1){
  16.             if(2*(p[i]/2)+1>maximum){
  17.                 maximum=2*(p[i]/2)+1;
  18.             }
  19.         }
  20.         else{
  21.             if (2*(p[i]/2)>maximum){
  22.                 maximum=2*(p[i]/2);
  23.             }
  24.         }
  25.     }
  26.     return maximum;
  27. }
  28. int main(){
  29.     int n;
  30.     cin>>n;
  31.     string s;
  32.     cin>>s;
  33.     string c;
  34.     for (int i=0; i<2*n+1; i++){
  35.         if(i%2==1){
  36.             int x=i/2;
  37.             c.push_back(s[x]);
  38.         }else{
  39.             c.push_back('.');
  40.         }
  41.     }
  42.     int answer=manaker(c, 2*n+1);
  43.     for (int i=1; i<2*n+1; i+=2){
  44.         for (int j=1; j<2*n+1; j+=2){
  45.             string k=c;
  46.             k[i]=c[j];
  47.             if (manaker(k, 2*n+1)>answer){
  48.                 answer=manaker(k, 2*n+1);
  49.             }
  50.         }
  51.     }
  52.     cout<<answer<<endl;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement