Submission details
Task:Longest palindrome
Sender:aalto25j_003
Submission time:2025-11-05 16:49:54 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.07 sdetails
#8ACCEPTED0.06 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.02 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.03 sdetails

Code

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <queue>
#include <climits>
//#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

#include <iostream>
#include <vector>
#include <string>
using namespace std;

          


void preprocess(vector<ll>& p, string& ms) {
    
    ll n = ms.size();
    p.assign(n, 0);
    ll l = 0, r = 0;

    for (int i = 1; i < n - 1; ++i) {
        
        if(r + l - i >= 0 && r + l - i < n)
            p[i] = max(0ll, min(r - i, p[r + l - i]));

        while (ms[i + 1 + p[i]] == ms[i - 1 - p[i]]) {
            ++p[i];
        }

        if (i + p[i] > r) {
            l = i - p[i];
            r = i + p[i];
        }
    }
}


string getLongestPalindrome(string &s, vector<ll>& p, string& ms) {
    ll n = s.size(), maxLen = 1, start = 0;

    for (ll i = 0; i < n; ++i) {
         ;
     
        ll oddLen = p[2 * i + 2];
        if (oddLen > maxLen) {

            start = i - (oddLen - 1) / 2;  
        }

        ll evenLen = p[2 * i + 2 + 1];
        if (evenLen > maxLen) {

            start = i - (evenLen - 1) / 2;  
        }

        maxLen = max(maxLen, max(oddLen, evenLen));
    }

    return s.substr(start, maxLen);
}




int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    string a;
    cin >> a;
    vector<ll> p;  
    string ms;

    ms = "@";  
    for (char c : a) {
        ms += "#" + string(1, c);  
    }
    ms += "#$";  
    preprocess(p, ms);

    
    cout << getLongestPalindrome(a, p, ms) << endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
aaaaaaaaaa

correct output
aaaaaaaaaa

user output
aaaaaaaaaa

Test 2

Verdict: ACCEPTED

input
ababababab

correct output
ababababa

user output
ababababa

Test 3

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

Test 4

Verdict: ACCEPTED

input
ababababababababababababababab...

correct output
ababababababababababababababab...

user output
ababababababababababababababab...

Test 5

Verdict: ACCEPTED

input
aztdvxzjwxtrludymvpradgbdpgnrq...

correct output
aztdvxzjwxtrludymvpradgbdpgnrq...

user output
aztdvxzjwxtrludymvpradgbdpgnrq...

Test 6

Verdict: ACCEPTED

input
vvfigwwsyxbukedgcfyibvtbclybud...

correct output
vvfigwwsyxbukedgcfyibvtbclybud...

user output
vvfigwwsyxbukedgcfyibvtbclybud...

Test 7

Verdict: ACCEPTED

input
abaabaaaaaaabaababbbbbbabaaabb...

correct output
babbbabbbaabbbbaabbbbbbbbaabbb...

user output
babbbabbbaabbbbaabbbbbbbbaabbb...

Test 8

Verdict: ACCEPTED

input
txolestmgyepwrpofxyesjtsfkhjac...

correct output
yxnbaabnxy

user output
yxnbaabnxy

Test 9

Verdict: ACCEPTED

input
ihpohpzoffel

correct output
ff

user output
ff

Test 10

Verdict: ACCEPTED

input
flexflexvpqxierullgcfckjqflexf...

correct output
cfc

user output
cfc

Test 11

Verdict: ACCEPTED

input
aabbabaabbaababbabaababbaabbab...

correct output
abaababbaabbabaababbabaabbaaba...

user output
abaababbaabbabaababbabaabbaaba...

Test 12

Verdict: ACCEPTED

input
obsession

correct output
ses

user output
ses

Test 13

Verdict: ACCEPTED

input
abcxcbaxcba

correct output
abcxcba

user output
abcxcba

Test 14

Verdict: ACCEPTED

input
zzabc

correct output
zz

user output
zz

Test 15

Verdict: ACCEPTED

input
aaccaabbaaccaaccaabbaaccaa

correct output
aaccaabbaaccaaccaabbaaccaa

user output
aaccaabbaaccaaccaabbaaccaa

Test 16

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...