Submission #251401

# Submission time Handle Problem Language Result Execution time Memory
251401 2020-07-21T07:03:54 Z phuleethanh Palindromes (APIO14_palindrome) C++14
47 / 100
1000 ms 8180 KB
#include <bits/stdc++.h>
using namespace std;
const int N = 303030;
struct nut
{
    int len = 0, occ = 0, suffLink = 0, child[26];
};
vector<nut> Tree;
char s[N];
int last;

void initPalinTree()
{
    Tree.emplace_back(), Tree.emplace_back();
    Tree[1].len = -1, Tree[0].suffLink = Tree[1].suffLink = 1;
    last = 0;
}

bool insert(int i)
{
    //Tim nut X to nhat thoa man
    while (s[i - Tree[last].len - 1] != s[i])
        last = Tree[last].suffLink;
    //Tim nut ma suffLink se tro toi
    int w = s[i] - 'a', tmp = Tree[last].suffLink;
    while (s[i - Tree[tmp].len - 1] != s[i])
        tmp = Tree[tmp].suffLink;
    //Them moi : Neu nut nay chua co trong cay
    if (Tree[last].child[w] == 0)
    {
        Tree[last].child[w] = Tree.size();
        Tree.emplace_back();
        Tree.back().len = Tree[last].len + 2;
        Tree.back().suffLink = (Tree.back().len == 1 ? 0 : Tree[tmp].child[w]);
    }
    last = Tree[last].child[w];
    Tree[last].occ++;
    return 1;
}

int main()
{
    //freopen("z.inp", "r", stdin);
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    initPalinTree();
    cin >> s;
    for (int i = 0; i < strlen(s); i++)
        insert(i);
    long long ans = 0;
    for (int i = Tree.size() - 1; i >= 2; i--)
    {
        ans = max(ans, 1ll * Tree[i].len * Tree[i].occ);
        Tree[Tree[i].suffLink].occ += Tree[i].occ;
    }
    cout << ans;
    return 0;
}

Compilation message

palindrome.cpp: In function 'int main()':
palindrome.cpp:47:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < strlen(s); i++)
                     ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 0 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 0 ms 384 KB Output is correct
9 Correct 0 ms 384 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 0 ms 384 KB Output is correct
12 Correct 1 ms 384 KB Output is correct
13 Correct 1 ms 384 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 384 KB Output is correct
16 Correct 0 ms 384 KB Output is correct
17 Correct 0 ms 384 KB Output is correct
18 Correct 1 ms 384 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 0 ms 384 KB Output is correct
21 Correct 0 ms 384 KB Output is correct
22 Correct 0 ms 384 KB Output is correct
23 Correct 1 ms 384 KB Output is correct
24 Correct 0 ms 384 KB Output is correct
25 Correct 0 ms 384 KB Output is correct
26 Correct 0 ms 384 KB Output is correct
27 Correct 0 ms 384 KB Output is correct
28 Correct 0 ms 384 KB Output is correct
29 Correct 0 ms 384 KB Output is correct
30 Correct 0 ms 384 KB Output is correct
31 Correct 0 ms 384 KB Output is correct
32 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 512 KB Output is correct
2 Correct 1 ms 512 KB Output is correct
3 Correct 1 ms 512 KB Output is correct
4 Correct 1 ms 512 KB Output is correct
5 Correct 1 ms 512 KB Output is correct
6 Correct 1 ms 512 KB Output is correct
7 Correct 1 ms 512 KB Output is correct
8 Correct 1 ms 512 KB Output is correct
9 Correct 1 ms 512 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 41 ms 2292 KB Output is correct
2 Correct 22 ms 2384 KB Output is correct
3 Correct 22 ms 2392 KB Output is correct
4 Correct 22 ms 2392 KB Output is correct
5 Correct 24 ms 2384 KB Output is correct
6 Correct 22 ms 2392 KB Output is correct
7 Correct 22 ms 2392 KB Output is correct
8 Correct 23 ms 504 KB Output is correct
9 Correct 27 ms 384 KB Output is correct
10 Correct 21 ms 1452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1087 ms 8180 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1091 ms 4648 KB Time limit exceeded
2 Halted 0 ms 0 KB -