Submission #261004

# Submission time Handle Problem Language Result Execution time Memory
261004 2020-08-11T09:44:40 Z atoiz Palindromes (APIO14_palindrome) C++14
100 / 100
32 ms 35160 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

const int MAXN = 300007;
int link[MAXN], nxt[MAXN][26], len[MAXN], val[MAXN];

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	string S;
	cin >> S;

	len[1] = -1, len[2] = 0;
	link[2] = 1;
	int u = 2, cnt = 2;
	int N = ((int) S.size());
	S = "-" + S;

	for (int i = 1; i <= N; ++i) {
		int c = (int) (S[i] - 'a');
		while (S[i] != S[i - len[u] - 1]) u = link[u];
		if (!nxt[u][c]) {
			nxt[u][c] = ++cnt;
			// cout << u << " -> " << nxt[u][c] << ": " << char(c + 'a') << endl;
			len[nxt[u][c]] = len[u] + 2;

			int v;
			for (v = link[u]; v && S[i] != S[i - len[v] - 1]; v = link[v]);
			if (v == 0) link[nxt[u][c]] = 2;
			else link[nxt[u][c]] = nxt[v][c];
		}
		u = nxt[u][c];
		++val[u];
	}

	int64_t ans = 0;
	for (int u = cnt; u > 2; --u) {
		// cout << u << ": " << len[u] << ' ' << val[u] << " -> " << link[u] << endl;
		if (link[u]) val[link[u]] += val[u];
		ans = max(ans, (int64_t) val[u] * len[u]);
	}
	cout << ans << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 1 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 1 ms 384 KB Output is correct
12 Correct 0 ms 384 KB Output is correct
13 Correct 0 ms 384 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 0 ms 384 KB Output is correct
16 Correct 1 ms 384 KB Output is correct
17 Correct 1 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 1 ms 384 KB Output is correct
21 Correct 1 ms 384 KB Output is correct
22 Correct 1 ms 384 KB Output is correct
23 Correct 1 ms 384 KB Output is correct
24 Correct 1 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 0 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 0 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 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1536 KB Output is correct
2 Correct 1 ms 1536 KB Output is correct
3 Correct 1 ms 1536 KB Output is correct
4 Correct 1 ms 1536 KB Output is correct
5 Correct 1 ms 1536 KB Output is correct
6 Correct 1 ms 1536 KB Output is correct
7 Correct 1 ms 1536 KB Output is correct
8 Correct 1 ms 384 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 1 ms 1152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 9 ms 11900 KB Output is correct
2 Correct 10 ms 11900 KB Output is correct
3 Correct 10 ms 11900 KB Output is correct
4 Correct 10 ms 11900 KB Output is correct
5 Correct 10 ms 11900 KB Output is correct
6 Correct 9 ms 8828 KB Output is correct
7 Correct 8 ms 10108 KB Output is correct
8 Correct 2 ms 636 KB Output is correct
9 Correct 4 ms 3196 KB Output is correct
10 Correct 10 ms 10236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 34784 KB Output is correct
2 Correct 31 ms 34772 KB Output is correct
3 Correct 30 ms 34784 KB Output is correct
4 Correct 32 ms 34776 KB Output is correct
5 Correct 28 ms 34772 KB Output is correct
6 Correct 27 ms 31072 KB Output is correct
7 Correct 26 ms 29152 KB Output is correct
8 Correct 6 ms 1032 KB Output is correct
9 Correct 5 ms 1032 KB Output is correct
10 Correct 26 ms 28640 KB Output is correct
11 Correct 30 ms 35160 KB Output is correct
12 Correct 8 ms 4320 KB Output is correct