# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
33800 | 2017-11-02T02:35:06 Z | sinhriv | Palindromes (APIO14_palindrome) | C++14 | 23 ms | 67764 KB |
#include <bits/stdc++.h> using namespace std; struct eerTree{ static const int Alpabet = 30; static const int N = 5e5; struct Node{ int nxt[Alpabet]; int suffix; int len; int value; }; int cnt; int current; Node tree[N]; string source; void addLetter(int pos){ int u = current; int c = source[pos] - 'a'; while(true){ int len = tree[u].len; if(pos - len - 1 >= 0 && source[pos - len - 1] == source[pos]){ break; } u = tree[u].suffix; } if(tree[u].nxt[c] != 0){ ++tree[tree[u].nxt[c]].value; current = tree[u].nxt[c]; return; } tree[u].nxt[c] = ++cnt; tree[cnt].value = 1; tree[cnt].len = tree[u].len + 2; if(tree[cnt].len == 1){ tree[cnt].suffix = 2; current = cnt; return; } while(true){ u = tree[u].suffix; int len = tree[u].len; if(pos - len - 1 >= 0 && source[pos - len - 1] == source[pos]){ tree[cnt].suffix = tree[u].nxt[c]; break; } } current = cnt; } void Init(string x){ cnt = current = 2; source = x; tree[1].len = -1; tree[1].suffix = 1; tree[2].len = 0; tree[2].suffix = 1; for(int i = 0; i < source.size(); ++i){ addLetter(i); } } long long calc(){ long long ans = 0; for(int i = cnt; i >= 1; --i){ ans = max(ans, 1LL * tree[i].value * tree[i].len); tree[tree[i].suffix].value += tree[i].value; } return ans; } }f; int main(){ if(fopen("1.inp", "r")){ freopen("1.inp", "r", stdin); } ios_base::sync_with_stdio(false); cin.tie(NULL); string s; cin >> s; f.Init(s); cout << f.calc(); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 66628 KB | Output is correct |
2 | Correct | 0 ms | 66628 KB | Output is correct |
3 | Correct | 0 ms | 66628 KB | Output is correct |
4 | Correct | 0 ms | 66628 KB | Output is correct |
5 | Correct | 0 ms | 66628 KB | Output is correct |
6 | Correct | 0 ms | 66628 KB | Output is correct |
7 | Correct | 0 ms | 66628 KB | Output is correct |
8 | Correct | 0 ms | 66628 KB | Output is correct |
9 | Correct | 0 ms | 66628 KB | Output is correct |
10 | Correct | 0 ms | 66628 KB | Output is correct |
11 | Correct | 0 ms | 66628 KB | Output is correct |
12 | Correct | 0 ms | 66628 KB | Output is correct |
13 | Correct | 0 ms | 66628 KB | Output is correct |
14 | Correct | 0 ms | 66628 KB | Output is correct |
15 | Correct | 0 ms | 66628 KB | Output is correct |
16 | Correct | 0 ms | 66628 KB | Output is correct |
17 | Correct | 0 ms | 66628 KB | Output is correct |
18 | Correct | 0 ms | 66628 KB | Output is correct |
19 | Correct | 0 ms | 66628 KB | Output is correct |
20 | Correct | 0 ms | 66628 KB | Output is correct |
21 | Correct | 0 ms | 66628 KB | Output is correct |
22 | Correct | 0 ms | 66628 KB | Output is correct |
23 | Correct | 0 ms | 66628 KB | Output is correct |
24 | Correct | 0 ms | 66628 KB | Output is correct |
25 | Correct | 0 ms | 66628 KB | Output is correct |
26 | Correct | 0 ms | 66628 KB | Output is correct |
27 | Correct | 0 ms | 66628 KB | Output is correct |
28 | Correct | 0 ms | 66628 KB | Output is correct |
29 | Correct | 0 ms | 66628 KB | Output is correct |
30 | Correct | 0 ms | 66628 KB | Output is correct |
31 | Correct | 0 ms | 66628 KB | Output is correct |
32 | Correct | 0 ms | 66628 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 66628 KB | Output is correct |
2 | Correct | 0 ms | 66628 KB | Output is correct |
3 | Correct | 0 ms | 66628 KB | Output is correct |
4 | Correct | 0 ms | 66628 KB | Output is correct |
5 | Correct | 0 ms | 66628 KB | Output is correct |
6 | Correct | 0 ms | 66628 KB | Output is correct |
7 | Correct | 0 ms | 66628 KB | Output is correct |
8 | Correct | 0 ms | 66628 KB | Output is correct |
9 | Correct | 0 ms | 66628 KB | Output is correct |
10 | Correct | 0 ms | 66628 KB | Output is correct |
11 | Correct | 0 ms | 66628 KB | Output is correct |
12 | Correct | 0 ms | 66628 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 66628 KB | Output is correct |
2 | Correct | 0 ms | 66628 KB | Output is correct |
3 | Correct | 0 ms | 66628 KB | Output is correct |
4 | Correct | 0 ms | 66628 KB | Output is correct |
5 | Correct | 0 ms | 66628 KB | Output is correct |
6 | Correct | 0 ms | 66628 KB | Output is correct |
7 | Correct | 0 ms | 66628 KB | Output is correct |
8 | Correct | 0 ms | 66628 KB | Output is correct |
9 | Correct | 0 ms | 66628 KB | Output is correct |
10 | Correct | 0 ms | 66628 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 67004 KB | Output is correct |
2 | Correct | 3 ms | 67004 KB | Output is correct |
3 | Correct | 6 ms | 67004 KB | Output is correct |
4 | Correct | 6 ms | 67004 KB | Output is correct |
5 | Correct | 0 ms | 67004 KB | Output is correct |
6 | Correct | 3 ms | 67004 KB | Output is correct |
7 | Correct | 0 ms | 67004 KB | Output is correct |
8 | Correct | 0 ms | 67004 KB | Output is correct |
9 | Correct | 3 ms | 67004 KB | Output is correct |
10 | Correct | 3 ms | 67004 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 67764 KB | Output is correct |
2 | Correct | 13 ms | 67764 KB | Output is correct |
3 | Correct | 16 ms | 67764 KB | Output is correct |
4 | Correct | 23 ms | 67764 KB | Output is correct |
5 | Correct | 23 ms | 67764 KB | Output is correct |
6 | Correct | 16 ms | 67764 KB | Output is correct |
7 | Correct | 9 ms | 67764 KB | Output is correct |
8 | Correct | 3 ms | 67764 KB | Output is correct |
9 | Correct | 6 ms | 67764 KB | Output is correct |
10 | Correct | 19 ms | 67764 KB | Output is correct |
11 | Correct | 6 ms | 67764 KB | Output is correct |
12 | Correct | 9 ms | 67764 KB | Output is correct |