Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- char v[12];
- int pal[12];
- void manacher ( int n )
- {
- int mij = 0;
- for ( int i = 1; i <= n; ++i )
- {
- if ( i > mij )
- {
- while ( v[i+pal[i]+1] == v[i-pal[i]-1] && i - pal[i] > 1 && i + pal[i] < n )
- pal[i]++;
- }
- else
- {
- pal[i] = min (mij + pal[mij] - i, pal[mij-(i-mij)]);
- while ( v[i+pal[i]+1] == v[i-pal[i]-1] && i - pal[i] > 1 && i + pal[i] < n )
- pal[i]++;
- if ( i + pal[i] >= mij + pal[mij] )
- mij = i;
- }
- }
- }
- int main()
- {
- cin>>(v+1);
- int len = strlen (v+1);
- manacher(len);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement