#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define reo(i,j,k) for(int i=j;i>=k;i--)
#define mem memset
#define mpy memcpy
typedef long long ll;
constexpr int N = 1e6 + 10;
int n, m = 26, p, sa[N], rk[N], se[N], cnt[N], ht[N];
char s[N];
inline void rsort() {
rep(i, 1, m) cnt[i] = 0;
rep(i, 1, n) cnt[rk[i]]++;
rep(i, 1, m) cnt[i] += cnt[i - 1];
reo(i, n, 1) sa[cnt[rk[se[i]]]--] = se[i];
}
inline void SA() {
if (n == 1) return (void)(rk[1] = 1, sa[1] = 1);
rep(i, 1, n) rk[i] = s[i] - 'a' + 1, se[i] = i; rsort();
for (int w = 1; w < n; w <<= 1, m = p) {
p = 0;
rep(i, n - w + 1, n) se[++p] = i;
rep(i, 1, n) if (sa[i] > w) se[++p] = sa[i] - w;
rsort(), swap(rk, se);
p = 0;
rep(i, 1, n)
if (se[sa[i]] == se[sa[i - 1]] && se[sa[i] + w] == se[sa[i - 1] + w]) rk[sa[i]] = p;
else rk[sa[i]] = ++p;
if (p == n) return;
}
}
int main() {
scanf("%s", s + 1), n = strlen(s + 1), SA();
fprintf(stderr, "%s\n", s + 1);
rep(i, 1, n) printf("%d%c", sa[i], " \n"[i == n]);
for (int i = 1, k = 0; i <= n; i++) {
if (k) k--;
while (s[i + k] == s[sa[rk[i] - 1] + k]) k++;
ht[rk[i]] = k;
}
rep(i, 2, n) printf("%d%c", ht[i], " \n"[i == n]);
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Subtask #1 Testcase #1 | 41.11 us | 56 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #2 | 1.57 ms | 7 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #3 | 1.569 ms | 7 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #4 | 2.912 ms | 7 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #5 | 2.91 ms | 7 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #6 | 2.909 ms | 7 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #7 | 42.811 ms | 9 MB + 744 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #8 | 67.829 ms | 9 MB + 968 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #9 | 46.647 ms | 9 MB + 836 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #10 | 31.813 ms | 9 MB + 68 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #11 | 33.282 ms | 9 MB + 112 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #12 | 60.361 ms | 10 MB + 8 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #13 | 57.56 ms | 10 MB + 28 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #14 | 49.28 ms | 9 MB + 864 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #15 | 48.903 ms | 9 MB + 864 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #16 | 59.062 ms | 10 MB + 8 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #17 | 58.756 ms | 10 MB + 8 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #18 | 58.982 ms | 10 MB + 8 KB | Accepted | Score: 0 | 显示更多 |