This documentation is automatically generated by competitive-verifier/competitive-verifier
#define PROBLEM "https://judge.yosupo.jp/problem/enumerate_palindromes"
#include "../../cp-library/manacher"
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
auto ret = akTARDIGRADE13::manacher(s);
int sz = ret.size();
for (int i = 1; i < sz - 1; ++i) cout << ret[i] << ' ';
cout << endl;
return 0;
}
#line 1 "src/verify/yosupo-enumerate-palindromes.test.cpp"
#define PROBLEM "https://judge.yosupo.jp/problem/enumerate_palindromes"
#line 2 "src/string/manacher.hpp"
#include <cassert>
#include <string>
#include <vector>
namespace akTARDIGRADE13 {
template <class T>
std::vector<int> manacher(const std::vector<T>& s) {
int n = s.size();
std::vector<int> ret(n << 1 | 1);
int sz = ret.size();
int i = 1, j = 1;
while (i < sz) {
while (j < i && i + j < (n << 1) && s[((i - j) >> 1) - 1] == s[(i + j) >> 1]) {
j += 2;
}
ret[i] = j;
if (j == 0) {
i++;
j = 1;
continue;
}
int k = 1;
while (k <= i && k + ret[i - k] < j) {
ret[i + k] = ret[i - k];
k++;
}
i += k;
j -= k;
}
return ret;
}
std::vector<int> manacher(const std::string& s) {
int n = s.size();
std::vector<int> ret(n << 1 | 1);
int sz = ret.size();
int i = 1, j = 1;
while (i < sz) {
while (j < i && i + j < (n << 1) && s[((i - j) >> 1) - 1] == s[(i + j) >> 1]) {
j += 2;
}
ret[i] = j;
if (j == 0) {
i++;
j = 1;
continue;
}
int k = 1;
while (k <= i && k + ret[i - k] < j) {
ret[i + k] = ret[i - k];
k++;
}
i += k;
j -= k;
}
return ret;
}
} // namespace akTARDIGRADE13
#line 3 "src/verify/yosupo-enumerate-palindromes.test.cpp"
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
auto ret = akTARDIGRADE13::manacher(s);
int sz = ret.size();
for (int i = 1; i < sz - 1; ++i) cout << ret[i] << ' ';
cout << endl;
return 0;
}
| Env | Name | Status | Elapsed | Memory |
|---|---|---|---|---|
| g++ | all_same_00 |
|
222 ms | 24 MB |
| g++ | all_same_01 |
|
96 ms | 24 MB |
| g++ | all_same_02 |
|
95 ms | 24 MB |
| g++ | all_same_03 |
|
96 ms | 24 MB |
| g++ | all_same_04 |
|
97 ms | 24 MB |
| g++ | example_00 |
|
12 ms | 20 MB |
| g++ | example_01 |
|
11 ms | 18 MB |
| g++ | example_02 |
|
11 ms | 20 MB |
| g++ | example_03 |
|
11 ms | 18 MB |
| g++ | max_random_00 |
|
88 ms | 24 MB |
| g++ | max_random_01 |
|
83 ms | 24 MB |
| g++ | max_random_02 |
|
86 ms | 24 MB |
| g++ | max_random_03 |
|
89 ms | 24 MB |
| g++ | max_random_04 |
|
88 ms | 24 MB |
| g++ | random_00 |
|
68 ms | 23 MB |
| g++ | random_01 |
|
80 ms | 23 MB |
| g++ | random_02 |
|
20 ms | 19 MB |
| g++ | random_03 |
|
74 ms | 23 MB |
| g++ | random_04 |
|
52 ms | 19 MB |
| g++ | small_00 |
|
12 ms | 18 MB |
| g++ | small_01 |
|
11 ms | 20 MB |
| g++ | small_02 |
|
11 ms | 18 MB |
| g++ | small_03 |
|
12 ms | 20 MB |
| g++ | small_04 |
|
12 ms | 18 MB |