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ă.