Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <map>
- #include <math.h>
- #include <stack>
- #include <queue>
- #include <iomanip>
- #include <set>
- #include <iterator>
- #include <string>
- #include <cstring>
- #include <string.h>
- #pragma comment(linker, "/STACK:1000000000")
- #define INF 1000000000
- #define MOD 1000000007
- #define EPS 1e-8
- #define pb push_back
- //#define mp make_pair
- #define f first
- #define s second
- #define all(xx) begin(xx), end(xx)
- #define rep(i, l, r) for (int i = l; i < r; i++)
- #define sz(v) (int)v.size()
- using namespace std;
- typedef long long ll;
- typedef double dbl;
- typedef long double ld;
- typedef pair <int, int> pii;
- typedef vector <int> vi;
- typedef vector <pii> vii;
- typedef vector <vi> vvi;
- typedef vector <string> vs;
- typedef map <int, int> mii;
- typedef stack <int> si;
- string str;
- vi d1, d2;
- int main() {
- //cout << fixed << setprecision(10);
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- //#ifdef LOCAL
- // freopen("input1.txt", "r", stdin);
- // freopen("output2.txt", "w", stdout);
- //#endif
- cin >> str;
- int n = str.size();
- d1.resize(n);
- d2.resize(n);
- int maxx = 0;
- int imx = 0, but = 0;
- int l = 0, r = -1;
- for (int i = 0; i < n; i++) {
- int k = (i > r ? 0 : min(d1[l + r - i], r - i + 1));
- while (i + k < n && i - k >= 0 && str[i + k] == str[i - k])
- k++;
- d1[i] = k--;
- if (maxx < d1[i]) {
- maxx = d1[i];
- imx = i;
- }
- if (i + k > r) {
- l = i - k;
- r = i + k;
- }
- }
- l = 0, r = -1;
- for (int i = 0; i < n; i++) {
- int k = (i > r ? 0 : min(d2[l + r - i + 1], r - i + 1));
- while (i + k < n && i - k > 0 && str[i - k - 1] == str[i + k]) {
- k++;
- }
- d2[i] = k;
- if ((maxx <= d2[i] && !but) || d2[i] > maxx) {
- maxx = d2[i];
- imx = i;
- but = 1;
- }
- if (i + k > r) {
- l = i - k - 1;
- r = i + k;
- }
- }
- for (int i = imx - maxx - but + 1; i < imx + maxx; i++) {
- cout << str[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement