From 5cd8e61fbe1b64128551aaa654388f44e8dc6536 Mon Sep 17 00:00:00 2001 From: MZuenni Date: Tue, 31 Jan 2023 15:22:19 +0100 Subject: added traingles --- string/suffixArray.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'string/suffixArray.cpp') 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, int>> L; int n, step, count; + vector SA, LCP; vector> P; - vector SA, LCP; + vector, 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(n)); + SuffixArray(const string& s) : n(sz(s)), SA(n), LCP(n), L(n) { + P.assign(__lg(n)*4-2, vector(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; } }; -- cgit v1.2.3