SuffixArray(string _a, int m) : a(" " + _a), N(a.length()), m(m), SA(N), LCP(N), x(N), y(N), w(max(m, N)), c(N) { a[0] = 0; DA(); kasaiLCP(); #define REF(X) { rotate(X.begin(), X.begin()+1, X.end()); X.pop_back(); } REF(SA); REF(LCP); a = a.substr(1, a.size()); for(int i = 0; i < (int) SA.size(); ++i) --SA[i]; #undef REF }
void suffixArray () { m = 256; N = strlen (str); DA (); kasaiLCP (); }