Rentib

Julka

Mar 10th, 2020
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.68 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string s;
  4. int wazne, P[1000007], n, k;
  5. int main()
  6. {
  7.     cin >> n >> s;
  8.     for ( int i=1; i<n ; i++)
  9.     {
  10.         while (k>0 and s[i]!=s[k])
  11.         {
  12.             k=P[k-1];
  13.         }
  14.         if( s[i]==s[k])
  15.         {
  16.             k=k+1;
  17.         }
  18.         P[i]=k;
  19.     }
  20.     wazne=P[n-1];
  21.     for ( int i=0; i<n-1-P[n-1]; i++)
  22.     {
  23.     P[i]=P[i+P[n-1]];
  24.     }
  25.     k=0;
  26.     for ( int i=1; i<n-2*P[n-1] ; i++)
  27.     {
  28.         while (k>0 and s[i]!=s[k])
  29.         {
  30.             k=P[k-1];
  31.         }
  32.         if( s[i]==s[k])
  33.         {
  34.             k=k+1;
  35.         }
  36.         P[i]=k;
  37.     }
  38.     cout<<P[n-2*P[n-1]-1]+wazne;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment