Skip to content

Commit 711cb9b

Browse files
authored
Update suffix array test to include LCP verification
1 parent 0119dd6 commit 711cb9b

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

tests/library_checker_aizu_tests/strings/suffix_array_short.test.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,22 @@ int main() {
99
cin.tie(0)->sync_with_stdio(0);
1010
string s;
1111
cin >> s;
12-
auto [sa, sa_inv, _] = sa_short(vi(all(s)));
13-
for (int i = 0; i < sz(s); i++) {
12+
auto [sa, sa_inv, lcp] = sa_short(vi(all(s)));
13+
rep (i, 0, sz(s)) {
1414
assert(sa[sa_inv[i]] == i);
1515
assert(sa_inv[sa[i]] == i);
1616
}
17+
vi lcp_kasai(sz(s) - 1);
18+
int sz = 0;
19+
rep(i, 0, n) {
20+
if (sz > 0) sz--;
21+
if (sa_inv[i] == 0) continue;
22+
for (int j = sa[sa_inv[i] - 1];
23+
max(i, j) + sz < n && s[i + sz] == s[j + sz];)
24+
sz++;
25+
lcp_kasai[sa_inv[i] - 1] = sz;
26+
}
27+
assert(lcp == lcp_kasai);
1728
for (int val : sa) cout << val << " ";
1829
cout << '\n';
1930
}

0 commit comments

Comments
 (0)