Олимпиадный тренинг

Задача . It's Mooin' Time III


Задача

Темы:

Беси анализирует строку из \(N\) (\(3 \leq N \leq 10^5\)) маленьких латинских букв \(s_1s_2 \ldots s_N\). Эльза рассматривает строку \(t\), содержащую три символа как MOO если \(t_2 = t_3\) и \(t_2 \neq t_1\).

Триплет \((i, j, k)\) валидный, если \(i < j < k\) и строка \(s_i s_j s_k\) формирует MOO. Для этого триплета ФД выполняет следующее, чтобы вычислить его величину

  • ФД сгибает строку \(s\) на 90-градусов в индексе \(j\)
  • Величина триплета - удвоенная площадь \(\Delta ijk\).

Другими словами, величина триплета есть \((j-i)(k-j)\).

Беси задаёт Вам \(Q\) (\(1 \leq Q \leq 3 \cdot 10^4\)) вопросов. В каждом вопросе она даёт Вам два целых числа \(l\) и \(r\) (\(1 \leq l \leq r \leq N\), \(r-l+1 \ge 3\)) и просит Вас определить максимальную величину среди всех валидных триплетов \((i, j, k)\) таких, что \(l \leq i\) и \(k \leq r\). Если валидных триплетов нет, выведите \(-1\).

Решение задачи может потребовать использовать 64-й целый тип (например, "long long" in C/C++).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит два целых числа \(N\) и \(Q\).

Следующая строка содержит символы \(s_1 s_2, \ldots s_N\).

Последующие \(Q\) строк содержат по два целых числа \(l\) и \(r\), обозначающих запрос.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите ответ на каждый вопрос в отдельной строке.

Примеры
Входные данныеВыходные данные
1 12 5
abcabbacabac
1 12
2 7
4 8
2 5
3 10
28
6
1
-1
12

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя