| 175 | } // namespace internal |
| 176 | |
| 177 | std::vector<int> suffix_array(const std::vector<int>& s, int upper) { |
| 178 | assert(0 <= upper); |
| 179 | for (int d : s) { |
| 180 | assert(0 <= d && d <= upper); |
| 181 | } |
| 182 | auto sa = internal::sa_is(s, upper); |
| 183 | return sa; |
| 184 | } |
| 185 | |
| 186 | template <class T> std::vector<int> suffix_array(const std::vector<T>& s) { |
| 187 | int n = int(s.size()); |