diff options
| author | MZuenni <michi.zuendorf@gmail.com> | 2023-01-31 15:22:19 +0100 |
|---|---|---|
| committer | MZuenni <michi.zuendorf@gmail.com> | 2023-01-31 15:22:19 +0100 |
| commit | 5cd8e61fbe1b64128551aaa654388f44e8dc6536 (patch) | |
| tree | 5a10b667335c3ba2b9951ac6c920e6c173db0e3c /string | |
| parent | 2ce6e6376ee0c0753837b7d423bd7cc297d37220 (diff) | |
added traingles
Diffstat (limited to 'string')
| -rw-r--r-- | string/suffixArray.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/string/suffixArray.cpp b/string/suffixArray.cpp index 3494a0b..df6259a 100644 --- a/string/suffixArray.cpp +++ b/string/suffixArray.cpp @@ -1,12 +1,11 @@ struct SuffixArray { - vector<pair<pair<int, int>, int>> L; int n, step, count; + vector<int> SA, LCP; vector<vector<int>> P; - vector<int> SA, LCP; + vector<pair<pair<int, int>, int>> L; - SuffixArray(const string& s) : n(sz(s)) { - SA.resize(n); LCP.resize(n); L.resize(n); - P.assign(__ln(n)*4-2, vector<int>(n)); + SuffixArray(const string& s) : n(sz(s)), SA(n), LCP(n), L(n) { + P.assign(__lg(n)*4-2, vector<int>(n)); for (int i = 0; i < n; i++) P[0][i] = s[i]; for (step = 1, count = 1; count < n; step++, count *= 2) { for (int i = 0; i < n; i++) @@ -26,12 +25,12 @@ struct SuffixArray { int lcp(int x, int y) { int ret = 0; if (x == y) return n - x; - for (int k = step - 1; k >= 0 && x < n && y < n; k--) + for (int k = step - 1; k >= 0 && x < n && y < n; k--) { if (P[k][x] == P[k][y]) { x += 1 << k; y += 1 << k; ret += 1 << k; - } + }} return ret; } }; |
