| Task: | Longest palindrome |
| Sender: | aalto25j_002 |
| Submission time: | 2025-11-05 16:52:39 +0200 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.04 s | details |
| #3 | ACCEPTED | 0.28 s | details |
| #4 | ACCEPTED | 0.28 s | details |
| #5 | ACCEPTED | 0.30 s | details |
| #6 | ACCEPTED | 0.30 s | details |
| #7 | ACCEPTED | 0.29 s | details |
| #8 | ACCEPTED | 0.26 s | details |
| #9 | ACCEPTED | 0.04 s | details |
| #10 | ACCEPTED | 0.04 s | details |
| #11 | ACCEPTED | 0.10 s | details |
| #12 | ACCEPTED | 0.04 s | details |
| #13 | ACCEPTED | 0.04 s | details |
| #14 | ACCEPTED | 0.04 s | details |
| #15 | ACCEPTED | 0.04 s | details |
| #16 | ACCEPTED | 0.15 s | details |
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 |
