Submission details
Task:Longest palindrome
Sender:aalto25j_002
Submission time:2025-11-05 16:52:39 +0200
Language:Python3 (PyPy3)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.28 sdetails
#4ACCEPTED0.28 sdetails
#5ACCEPTED0.30 sdetails
#6ACCEPTED0.30 sdetails
#7ACCEPTED0.29 sdetails
#8ACCEPTED0.26 sdetails
#9ACCEPTED0.04 sdetails
#10ACCEPTED0.04 sdetails
#11ACCEPTED0.10 sdetails
#12ACCEPTED0.04 sdetails
#13ACCEPTED0.04 sdetails
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.15 sdetails

Code

class Manacher:
    def __init__(self, s):
        self.transformed = '@#' + '#'.join(s) + '#$'
        self.pal_radii = [0] * len(self.transformed)
        self._process()

    def _process(self):
        n = len(self.transformed)
        center = right = 0

        for i in range(1, n - 1):
            mirror = 2 * center - i

            if i < right:
                self.pal_radii[i] = min(right - i, self.pal_radii[mirror])
            while self.transformed[i + 1 + self.pal_radii[i]] == self.transformed[i - 1 - self.pal_radii[i]]:
                self.pal_radii[i] += 1

            if i + self.pal_radii[i] > right:
                center = i
                right = i + self.pal_radii[i]

    def longest_radius(self, center_index, is_odd_length):
        transformed_pos = 2 * center_index + 2 + (0 if is_odd_length else 1)
        return self.pal_radii[transformed_pos]


def longestPalindrome(s):
    manacher = Manacher(s)
    n = len(s)

    max_length = 1
    start_index = 0

    for i in range(n):
        odd_len = manacher.longest_radius(i, True)
        if odd_len > max_length:
            max_length = odd_len
            start_index = i - max_length // 2

        even_len = manacher.longest_radius(i, False)
        if even_len > max_length:
            max_length = even_len
            start_index = i - max_length // 2 + 1

    return s[start_index:start_index + max_length]


if __name__ == "__main__":
    s = input().strip()
    print(longestPalindrome(s))

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...
Truncated

Test 4

Verdict: ACCEPTED

input
ababababababababababababababab...

correct output
ababababababababababababababab...

user output
ababababababababababababababab...
Truncated

Test 5

Verdict: ACCEPTED

input
aztdvxzjwxtrludymvpradgbdpgnrq...

correct output
aztdvxzjwxtrludymvpradgbdpgnrq...

user output
aztdvxzjwxtrludymvpradgbdpgnrq...
Truncated

Test 6

Verdict: ACCEPTED

input
vvfigwwsyxbukedgcfyibvtbclybud...

correct output
vvfigwwsyxbukedgcfyibvtbclybud...

user output
vvfigwwsyxbukedgcfyibvtbclybud...
Truncated

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...
Truncated

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...
Truncated