| Финал Яндекс.Алгоритм 2018 |
|---|
| Закончено |
Вам скорее всего известно, что основным продуктом компании Яндекс является поисковик, о котором и пойдёт речь в данной задаче.
В рамках данной задачи будет считать, что поисковик работает с базой данных, которая может быть представлена как строка s длины n. Система разрешается пользователям делать произвольные текстовые запросы к базе данных, в качестве ответа на эти запросы будет выведен список всех вхождений запроса в базу. Вхождение в базу называется появление текста-запроса в качестве подстроки строки s.
Алисе скучно, поэтому она развлекает себя тем, что открывает поисковик и вводит туда различные запросы. Изначально перед Алисой пустое текстовое поле. Каждый раз она изменяет предыдущий запрос ровно на одну букву, дописывая её в начало или в конец запроса по своему усмотрению. Алиса проделывает такую операцию ровно n раз.
В этом процессе Алисе нравится смотреть как на экране появляются все вхождения и как сильно может изменить их количество после добавления одного символа. Алиса хочет протестировать как поведёт себя поисковик если ему потребуется выводить очень много данных, поэтому она хочет выбрать такую последовательность приписываний букв в начало или конец строки, что суммарное количество вхождений всех строк-запросов в строку базы данных s будет максимально. Какое максимальное значение может получить Алиса?
В первой строке входных данных записано одно целое число n (1 ≤ n ≤ 200 000) — длина строки s.
Во второй строке записана сама строка s, состоящая из строчных букв английского алфавита.
Выведите одно число — максимальное возможное суммарное количество вхождений всех строк-запросов.
5
aaaaa
15
6
abcabc
9
В первом примере последовательность "a" → "aa" → "aaa" → "aaaa" → "aaaaa" даёт результат в 15 = 5 + 4 + 3 + 2 + 1 вхождений.
Одной из оптимальных последовательностей во втором примере является "a" → "ab" → "abc" → "cabc" → "bcabc" → "abcabc", позволяя получить 9 = 2 + 2 + 2 + 1 + 1 + 1 вхождений в сумме.
| Название |
|---|


