MCPcopy Create free account
hub / github.com/ShahjalalShohag/code-library / induced_sort

Function induced_sort

Strings/Suffix Array.cpp:7–30  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5const int LG = 18;
6
7void induced_sort(const vector<int> &vec, int val_range, vector<int> &SA, const vector<bool> &sl, const vector<int> &lms_idx) {
8 vector<int> l(val_range, 0), r(val_range, 0);
9 for (int c : vec) {
10 if (c + 1 < val_range) ++l[c + 1];
11 ++r[c];
12 }
13 partial_sum(l.begin(), l.end(), l.begin());
14 partial_sum(r.begin(), r.end(), r.begin());
15 fill(SA.begin(), SA.end(), -1);
16 for (int i = lms_idx.size() - 1; i >= 0; --i)
17 SA[--r[vec[lms_idx[i]]]] = lms_idx[i];
18 for (int i : SA)
19 if (i >= 1 && sl[i - 1]) {
20 SA[l[vec[i - 1]]++] = i - 1;
21 }
22 fill(r.begin(), r.end(), 0);
23 for (int c : vec)
24 ++r[c];
25 partial_sum(r.begin(), r.end(), r.begin());
26 for (int k = SA.size() - 1, i = SA[k]; k >= 1; --k, i = SA[k])
27 if (i >= 1 && !sl[i - 1]) {
28 SA[--r[vec[i - 1]]] = i - 1;
29 }
30}
31
32vector<int> SA_IS(const vector<int> &vec, int val_range) {
33 const int n = vec.size();

Callers 1

SA_ISFunction · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected