Да хотя бы даже за счёт быстрого ввода/вывода.
Там 10 ** 5 + 3 строк вводится, 10 ** 5 выводится, и чтение простым инпутом оказывается слишком медленным, как и вывод по строке за раз
Так же ускорение даёт верный выбор алгоритма (precalc за O(n) позволяет получать ответ за O(1), тогда как во втором варианте Вашего решения ответ на запрос выдаётся за O(len), где len - длина подстроки в каждом конкретном запросе). Разница - на лицо!
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.