Cerință
Avem un text format din caractere. Acestea sunt numerotate de la stânga începând cu poziția . Asupra acestuia se aplică operații de highlight. O operație este specificată printr-un triplet de forma st dr c
cu semnificația: Caracterele aflate între pozițiile și inclusiv se colorează folosind culoarea (indiferent dacă era anterior colorat sau nu). Dacă se consideră că ștergem zona de highlight intre pozițiile și ( nu este culoare)
Din când în când ne interesează să aflăm, pentru o culoare dată, câte zone sunt highlightate cu ea. O secvență maximală de caractere consecutive care au culoarea se numără o singură dată.
Date de intrare
Pe prima linie a fișierului highlight.in
se află (lungimea textului) și (numărul de operații). Pe fiecare din următoarele linii se află descrierea câte unei operații în unul din următoarele două moduri:
1 sr dr c
(reprezintă o operație de aplicare de highlight așa cum s-a descris mai sus);2 c
(reprezintă o operație de interogare, așa cum s-a descris mai sus).
Date de ieșire
Fișierul highlight.out
conține același număr de linii cu numărul de operații de tip din fișierul de intrare. Pentru fiecare operație, în ordinea aparițiilor, se scrie câte un număr, cu semnificația descrisă anterior.
Restricții și precizări
- ;
- ;
- (pentru operațiile de tip );
- (pentru operațiile de tip );
- La fiecare operație de tip valorile și sunt cuprinse între și inclusiv și ;
- Pentru de puncte, ;
- Pentru alte de puncte, (pentru operațiile de tipul și ).
Exemplu
highlight.in
9 10
1 3 3 1
1 2 4 1
1 5 6 1
2 1
2 2
1 4 5 2
2 1
1 3 5 0
2 1
2 2
highlight.out
1
0
2
2
0
Explicație
Considerăm culoarea roșu si culoarea albastru.
1 3 3 1
:1 2 4 1
:1 5 6 1
:2 1
: Culoarea apare o dată.2 2
: Culoarea apare de zero ori.1 4 5 2
:2 1
: Culoarea apare de două ori.1 3 5 0
:2 1
: Culoarea apare de două ori.2 2
: Culoarea nu apare.