Se consideră șirul de litere mici ale alfabetului englez .
Fie succesiunea de caractere alăturate din șir , unde , pe care o notăm cu .
Pentru oricare literă mică a alfabetului englez , definim ca fiind , dacă apare cel mult o dată în . Altfel, valoarea este egală cu diferența dintre cea mai mare și cea mai mică poziție pe care litera apare în .
Șirul suport asociat lui este șirul de caractere minim lexicografic ce conține fiecare literă de ori.
De exemplu, dacă șirul este șirul abdacgacd
și considerăm , atunci (pentru că, în , litera a
apare pe pozițiile și ), și pentru toate celelalte litere . Șirul suport asociat lui este, astfel, aaaccc
.
Un șir de caractere este o anagramă a șirului dacă este identic cu sau dacă se poate obține din prin schimbarea ordinii caracterelor. De exemplu, șirul de caractere tamara
este o anagramă a șirului armata
. Două anagrame se consideră a fi distincte dacă ele diferă în cel puțin o poziție. De exemplu, șirul de caractere aab
are trei anagrame distincte: aab
, aba
, baa
.
Asupra șirului se efectuează două tipuri de operații:
- Actualizare: dându-se litera și poziția , se înlocuiește cu .
- Generare: dându-se perechea , se generează șirul suport al lui .
Cerință
Problema are două cerințe, cerința de rezolvat fiind dată de . Pentru ambele cerințe, se dau șirul și operații care se vor efectua în ordine.
Dacă : determinați șirul suport minim lexicografic dintre cele obținute în urma tuturor operațiilor de generare.
Dacă : pentru fiecare operație de generare dată, determinați numărul de anagrame distincte ale șirului suport obținut, modulo .
Date de intrare
Pe prima linie a fișierului de intrare anagrame.in
se află numerele naturale , și , unde este numărul cerinței ( sau ), iar și au semnificația din enunț.
Pe a doua linie se află șirul , cele caractere ale sale nefiind separate prin spații. Pe fiecare dintre următoarele linii se află datele care descriu câte o operație:
- O operație de actualizare este descrisă prin caracterul și un număr natural , cu semnificația din enunț.
- O operație de generare este descrisă prin perechea , de numere naturale, cu semnificația din enunț.
Valorile aflate pe aceeași linie a fișierului de intrare sunt separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire anagrame.out
conține:
Dacă : pe prima linie, șirul suport minim lexicografic cerut la cerința .
Dacă : pentru fiecare generare câte o linie, ce conține numărul cerut în cerința 2, în ordinea corespunzătoare generărilor date.
Restricții și precizări
- Se garantează că, pentru oricare operație de generare din testele de evaluare, șirul suport va conține cel puțin un caracter.
- În cadrul unei actualizări este permisă înlocuirea literei de pe poziția cu ea însăși.
- Șirul de caractere este lexicografic mai mic decât șirul dacă (i)~ și pentru oricare , sau (ii)~există un astfel încât și .
# | Punctaj | Restricții |
---|---|---|
1 | 8 | ; ; nu există actualizări, iar șirul are toate literele identice |
2 | 16 | ; |
3 | 24 | ; ; nu există actualizări |
4 | 12 | |
5 | 8 | ; ; nu există actualizări, iar șirul are toate literele identice |
6 | 12 | ; ; și |
7 | 8 | ; ; înainte de toate actualizările și după fiecare actualizare,șirul nu va conține alte litere în afară de a și b |
8 | 12 |
Exemplul 1
anagrame.in
1 5 5
abcar
b 3
1 4
r 4
r 2
2 4
anagrame.out
aaab
Explicație
După prima actualizare, șirul devine abbar
. A doua operație este o generare. Șirul suport obținut pentru abba
este aaab
. După următoarele două actualizări, șirul devine arbrr
, iar șirul suport pentru rbr
corespunzător celei de a doua generări este rr
. Șirul suport minim lexicografic dintre cele două obținute este aaab
.
Exemplul 2
anagrame.in
2 5 5
abcar
b 3
1 4
r 4
r 2
2 4
anagrame.out
4
1
Explicație
Pentru prima generare șirul suport obținut este aaab
, care are patru anagrame distincte: aaab
, aaba
, abaa
, baaa
. După următoarele două operații, șirul suport pentru rbr
este rr
, care are o singură anagramă.