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

Compiler report

input/code.cpp: In function 'std::string longest_palindrome(std::string, std::string)':
input/code.cpp:36:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = pattern_length + 1; i < z_array.size(); ++i) {
      |                                      ~~^~~~~~~~~~~~~~~~
input/code.cpp: In function 'int main()':
input/code.cpp:58:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |     for (int i = 0; i < rev_word.length(); ++i) {
      |                     ~~^~~~~~~~~~~~~~~~~~~

Code

#include <bits/stdc++.h>
#include <string>

using namespace std;

vector<int> z(string s) {
    int n = s.size();
    vector<int> z(n);
    z[0] = n;
    int x = 0, y = 0;

    for (int i = 1; i < n; i++) {
        z[i] = max(0,min(z[i-x],y-i+1));
        while (i+z[i] < n && s[z[i]] == s[i+z[i]]) {
            x = i; y = i+z[i]; z[i]++;
        }
    }

    /*
    for (int i = 0; i < z.size(); ++i)
        cout << z[i] << " ";
    cout << endl;
    */
   
    return z;
}

string longest_palindrome(string word, string pattern) {
    string max_palindrome;

    int pattern_length = pattern.length();
    string combined = pattern + "#" + word;
    vector<int> z_array = z(combined);

    int max_length = 0;
    for (int i = pattern_length + 1; i < z_array.size(); ++i) {
        if (z_array[i] > max_length) {
            max_length = z_array[i];
            max_palindrome = pattern.substr(0, max_length);
        }
    }

    return max_palindrome;
}

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

    string word;
    cin >> word;

    string rev_word = word;
    reverse(rev_word.begin(), rev_word.end());

    string max_palindrome = "";

    for (int i = 0; i < rev_word.length(); ++i) {
        string pattern = rev_word.substr(i, rev_word.length() - i);

        string palindrome = longest_palindrome(word, pattern);
        if (palindrome.length() > max_palindrome.length())
            max_palindrome = palindrome;
    }

        cout << max_palindrome << "\n";

}

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
babababab

Test 3

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)

Test 4

Verdict:

input
ababababababababababababababab...

correct output
ababababababababababababababab...

user output
(empty)

Test 5

Verdict:

input
aztdvxzjwxtrludymvpradgbdpgnrq...

correct output
aztdvxzjwxtrludymvpradgbdpgnrq...

user output
(empty)

Test 6

Verdict:

input
vvfigwwsyxbukedgcfyibvtbclybud...

correct output
vvfigwwsyxbukedgcfyibvtbclybud...

user output
(empty)

Test 7

Verdict:

input
abaabaaaaaaabaababbbbbbabaaabb...

correct output
babbbabbbaabbbbaabbbbbbbbaabbb...

user output
(empty)

Test 8

Verdict:

input
txolestmgyepwrpofxyesjtsfkhjac...

correct output
yxnbaabnxy

user output
(empty)

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:

input
aabbabaabbaababbabaababbaabbab...

correct output
abaababbaabbabaababbabaabbaaba...

user output
(empty)

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:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)