Поиск подподстроки в подстроке | 프로그래밍의 벗 PivotOJ
PivotOJ

Поиск подподстроки в подстроке

시간 제한: 2000ms메모리 제한: 1024MB출처: MOOI 2018-19 quallongBOJ 30724

문제

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

К сожалению, для решения этой задачи уже придумано множество алгоритмов, поэтому сама по себе она может быть интересна только в качестве упражнения, но не олимпиадной задачи. Однако, как это часто бывает со стандартными задачами, её легко усложнить --- представим, что нас интересуют не сами строки ss и tt, а некоторые их подстроки s[l1r1]s[l_1 \ldots r_1] и t[l2r2]t[l_2 \ldots r_2].

Как вы уже, наверное, догадались, вам дано qq запросов, ii-й из которых задаёт некоторые подстроки sˉ=s[l1ir1i]\bar s = s[{l_1}_i \ldots {r_1}_i] и tˉ=t[l2ir2i]\bar t = t[{l_2}_i \ldots {r_2}_i]. Для каждого такого запроса необходимо посчитать количество вхождений строки sˉ\bar s в строку tˉ\bar t.

입력

Первая и вторая строки входных данных содержат строки ss и tt (1s,t21051 \le |s|, |t| \le 2 \cdot 10^5) соответственно. Строки состоят из маленьких букв английского алфавита.

В третьей строке задано одно число qq (1q51051 \le q \le 5 \cdot 10^5) --- количество запросов.

Каждая из следующих qq строк содержит по четыре числа l1l_1, r1r_1, l2l_2 и r2r_2 (1l1r1s,1l2r2t1 \le l_1 \le r_1 \le |s|, 1 \le l_2 \le r_2 \le |t|), описывающих очередной запрос.

출력

Выведите qq чисел --- ответы на запросы.

힌트

Рассмотрим запросы в первом примере. Для индексации позиций вхождения будем использовать изначальные позиции в строке tt.

  1. sˉ=ab,tˉ=abababa\bar s = ab, \bar t = abababa. sˉ\bar s входит в tˉ\bar t, начиная с индексов [1,3,5][1, 3, 5].
  2. sˉ=bb,tˉ=babababb\bar s = bb, \bar t = babababb. sˉ\bar s входит в tˉ\bar t, начиная с индекса [8][8].
  3. sˉ=b,tˉ=baba\bar s = b, \bar t = baba. sˉ\bar s входит в tˉ\bar t, начиная с индексов [4,6][4, 6].
  4. sˉ=ab,tˉ=bab\bar s = ab, \bar t = bab. sˉ\bar s входит в tˉ\bar t, начиная с индекса [3][3].
  5. sˉ=a,tˉ=ababababb\bar s = a, \bar t = ababababb. sˉ\bar s входит в tˉ\bar t, начиная с индексов [1,3,5,7][1, 3, 5, 7].

예제

예제 1

입력
abb
ababababb
5
1 2 1 7
2 3 2 9
3 3 4 7
1 2 2 4
1 1 1 9
출력
3
1
2
1
4
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.