Doprogramovanie do: 13. február 2023 23:59
11 dní
Popisy už neodovzdávajte. Ešte stále však môžete odosielať vaše programy, za ktoré dostanete časť bodov.
Počet bodov:
Popis:  12b
Program:  8b

David si z knižnice požičal lexikón kúziel. V lexikóne kúziel sa ukrýva jeho obľúbené zaklínadlo. Chcel nájsť, koľkokrát sa tam nachádza. Lenže! Čarodejnica pred ním zo srandy lexikón zakliala, takže sa po každom prečítaní text trochu zmení. David bol tvrdohlavý a po každej zmene lexikónu znova zisťoval, koľkokrát je tam zaklínadlo. Toto robil, až kým mu neuplynula výpožičná lehota a keďže nechcel platiť pokutu, musel lexikón vrátiť.

Úloha

Máme reťazec a podreťazec, v reťazci hľadáme počet výskytov podreťazca. Reťazec sa mení. Po každej zmene chceme znova zistiť počet výskytov podreťazca.

Formát vstupu

V prvom riadku je reťazec dlhý \(n\) (\(1 \leq n \leq 10^6\)). V druhom riadku je podreťazec dlhý \(m\) (\(1 \leq m \leq 10^4\)). Možeš predpokladať, že \(m \leq n\). V treťom riadku je číslo \(q\) (\(0 \leq q \leq 10^3\)). Nasleduje \(q\) riadkov vo formáte [\(p\)] [\(S\)], \(p\) označuje miesto v texte, kam zapísať podreťazec \(S\) (\(0 \leq p \leq n-m\)). Dĺžka podreťazca \(S\) je rovná \(m\), to znamená, že dĺžka reťazca sa celý čas nemení.

Formát výstupu

Na výstupe je \(1+q\) riadkov, jeden pre pôvodný text a jeden pre každú zmenu v reťazci. Na každom riadku je jedno číslo, počet výskytov podreťazca v reťazci.

V niektorých pomalších jazykoch (python) nemusí správne riešenia prechádzať na plný počet bodov. Body za popis táto skutočnosť neovplyvní. ## Príklady

Input:

BANANANOS
NANA
2
5 ANAS
3 XXXX

Output:

1
2
0

V pôvodnom reťazci sa podreťazec “NANA” vyskytuje raz. Potom sa reťazec zmení na “BANANANAS”, preto sa tam podreťazec vyskytuje dvakrát. Potom sa zmení na “BANXXXXAS”, kde už sa podreťazec nevyskytuje.

Input:

AAAAAAAAAAAAAAA
AAA
2
1 XXX
6 XXX

Output:

13
9
4

Input:

BALALAJKA
ALA
2
5 ALA
1 BLA

Output:

2
3
2

Input:

BLBALABLA
BL
2
1 LB
2 AL

Output:

2
2
2

Input:

BABANANASSSSSS
NANA
1
1 XXXX

Output:

1
0

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.