EduBrick

C. Наибольшая из подстрок

3000 мс · 256 МБ · всё или ничего

Даны qq подстрок строки ss, каждая задана парой (l,r)(l, r). Выведите номер лексикографически наибольшей из них. Если таких несколько, выведите наименьший номер.

Сравнение двух подстрок - то же, что в классной задаче: двоичным поиском находим длину общего префикса, дальше смотрим на первый различающийся символ, а если различий нет - на длины.

Дальше это просто поиск максимума: держим текущего лидера и сравниваем с ним каждую следующую подстроку. Всего qq сравнений по O(log⁡n)O(\log n).

Тонкость с «наименьшим номером»: лидер меняется только при строго большей подстроке. Если сравнение вернуло «равны», лидер остаётся прежним.

Заведите сравнение отдельной функцией, возвращающей −1-1, 00 или 11, - иначе ветка равенства теряется почти наверняка.

Формат ввода

В первой строке - строка ss (1≤∣s∣≤1051 \le \lvert s \rvert \le 10^5) из строчных латинских букв.

Во второй - число qq (1≤q≤1051 \le q \le 10^5).

В следующих qq строках - пары ll, rr (1≤l≤r≤∣s∣1 \le l \le r \le \lvert s \rvert).

Формат вывода

Одно число - номер лексикографически наибольшей подстроки.

Примеры

ввод
abacaba
3
1 3
5 7
2 4
вывод
3
ввод
ba
2
1 1
2 2
вывод
1
Войдите, чтобы отправлять решения.