Gigel este un împătimit al jocurilor și petrece ore întregi tastând pentru a-și învinge adversarii virtuali. Într-o zi, el a descoperit că tastatura lui a început să se comporte ciudat pentru două din tastele utilizate intens pentru jocurile sale: tasta w și tasta m. Mai exact, Gigel a observat că atunci când dorește să scrie un mesaj și apasă tasta w uneori în mesaj este inclusă litera w, dar alteori, pentru o singură apăsare a tastei w, este inclusă secvența vv. În mod similar, când încearcă să utilizeze tasta m: la o apăsare a tastei m uneori îi apare m în mesaj, dar alteori apare secvența nn. Orice altă tastă funcționează corect. Spre exemplu, atunci când tastează cuvântul warm el poate obține unul din următoarele cuvinte: warm – dacă totul funcționează corect; vvarm – dacă pentru tasta w apare vv; warnn – dacă pentru tasta m apare nn; vvarnn – dacă pentru tasta w apare vv și pentru tasta m apare nn.
Gigel a descoperit un joc pentru care trebuie să tasteze șiruri armonioase. Un șir este considerat armonios dacă conține cel puțin o literă m și numărul de litere w din șir divide numărul de litere m care apar în acel șir. Spre exemplu, șirul mawnmvwbdmem este considerat armonios, deoarece conține apariții pentru w și apariții pentru m, dar șirurile awnmvwbdmem, mawnmvwbdme sau wawnmvwbdmwe nu sunt armonioase.
Definim următoarele două operații care se pot aplica unui șir de caractere:
- dacă în șir identificăm două litere consecutive
vvle înlocuim cu literaw; - dacă în șir identificăm două litere consecutive
nnle înlocuim cu literam.
De exemplu, aplicând operațiile de mai sus șirul vvarnnn poate fi transformat în: warnnn, warmn, warnm, vvarmn, vvarnm.
Cerințe
Dat fiind un șir format din litere mici ale alfabetului englez, scrieți un program care să rezolve următoarele cerințe:
- pentru o succesiune de valori date , să se determine pentru fiecare valoare dacă, prin aplicarea a , sau mai multe operații descrise în enunț, se poate transforma șirul dat într-un șir armonios care să conțină exact apariții pentru
m; - să se determine numărul de perechi distincte de forma cu proprietatea că, prin aplicarea a , sau mai multe operații din enunț, putem transforma șirul dat într-un șir armonios care să conțină exact apariții pentru
wși apariții pentrum; - să se determine lungimea maximă a unei secvențe armonioase din șirul dat, fără aplicarea niciunei operații; o secvență este formată din litere situate pe poziții consecutive în șir.
Date de intrare
Fișierul de intrare armonioase.in conține pe prima linie numărul natural reprezentând cerința care trebuie rezolvată (, sau ). Pe a doua linie se află un șir format din litere mici ale alfabetului englez. Dacă , pe a treia linie se află numărul natural , iar pe următoarele linii sunt scrise valorile , câte o valoare pe o linie.
Date de ieșire
Fișierul de ieșire armonioase.out conține:
- dacă : linii; pe linia este scris mesajul
DAdacă, prin aplicarea a , sau mai multe operații din enunț, se poate transforma șirul dat într-un șir armonios care să conțină exact apariții pentrum, respectiv mesajulNUîn caz contrar. - dacă sau : o singură linie pe care este scris un număr natural reprezentând răspunsul la cerința .
Restricții și precizări
- lungimea șirului dat ;
- ;
- , pentru orice ;
- Se garantează că în șirul dat există cel puțin o literă
wși o literăm.
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 20 | |
| 2 | 15 | |
| 3 | 12 | , |
| 4 | 10 | , , numărul total de litere w și m este |
| 5 | 43 | , fără restricții suplimentare |
Exemplul 1
armonioase.in
1
annnvvwmmbnnwmavmwv
2
5
6
armonioase.out
NU
DA
Explicație
. Șirul conține litere m și litere w.
Nu putem obține un șir armonios cu apariții ale literei m, deoarece are exact divizori ( și ), deci ar trebui să avem fie , fie litere w. Fiindcă există deja litere w și doar o pereche vv care ar putea fi transformată într-un w, nu putem obține litere w.
Pentru răspunsul este DA, deoarece (numărul de litere w) divide pe .
Exemplul 2
armonioase.in
2
vvamnnnvvw
armonioase.out
3
Explicație
.
Perechile pentru care putem obține un șir armonios sunt: (exemplu: vvamnnnvvw), (exemplu: vvammnvvw) și (exemplu: wammnvvw).
Exemplul 3
armonioase.in
3
avwmmbwmamw
armonioase.out
10
Explicație
.
Cea mai lungă secvență armonioasă este avwmmbwmam, care conține două apariții ale literei w și apariții ale literei m. Cum , secvența este armonioasă. Aceasta are lungimea și nu există nicio secvență mai lungă care să respecte condiția.