Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define pii pair <int, int>
- #define pb push_back
- #define f first
- #define s second
- #define mp make_pair
- #define sz(x) (int)x.size()
- #define forit(it, v) for(__typeof(v.begin()) it = v.begin(); it != v.end(); ++it)
- #define sqr(x) (x) * 1ll * (x)
- #define all(x) x.begin(), x.end()
- const int inf = 1e9;
- const int mod = 1e9 + 7;
- const double eps = 1e-6;
- string s;
- int p[10100];
- int main(){
- ios_base::sync_with_stdio(0), cin.tie(0);
- cin>>s;
- string rs = "";
- int n = sz(s);
- for(int i=0; i<n; i++)
- rs[n-1-i] = s[i];
- p[0] = 0;
- int k = 0;
- for(int i = 1; i<n; i++){
- while(k>0 && rs[k] != rs[i])
- k = p[k-1];
- if(rs[i] == rs[k]) k++;
- p[i] = k;
- }
- k = 0;
- for(int i = 0; i<n; i++){
- while(k>0 && s[i] != s[k]){
- k = p[k-1]; }
- if(s[i] == s[k])
- k++;
- if(k == n)
- k = p[k-1];
- }
- cout<<s;
- for(int i=k+1; i<n; i++)
- cout<<rs[i];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement