$ Суффиксный массив
vb = [Ваня]
sk = [Сережа.K]
sm = [Сережа.М]
# $sk$ С/C++
## Конструкторы и деструкторы
## Finalize через деструкторы
## public, private, struct, class, наследование
## свой модный вектор с unique!
## nth\_element: стандартный метод, реализация через qsort за O(n)
# $sm$ Суффиксный зоопарк
## Суффиксный массив за O(nlog^2n) хешами
## Суффиксный массив за O(nlogn)
### Сортировка подсчетом
### Цифровая сортировка
### Суффиксы → циклические сдвиги
### Основная фаза: удвоение длины
## LCP
### Алгоритм Касаи для подсчета LCP за O(n)
### Проблемы в случае циклических сдвигов и периодичной строки
## Задачи на строки, решение деревом и массивом
## LCP любых двух за O(1): RMQ в массиве, LCA в дереве
### Поиск строки в тексте (строим структуру от текста, отвечаем на запрос-строку)
### Число различных подстрок
### Общая подстрока двух строк
### Общая подстрока k строк
!### Число подпалиндромов
!### Число общих подпалиндромов
!### k-я лексикографически общая подстрока
!### Найти самую длинную строку, которая встречается как подстрока хотя бы k раз