Ada și Ben sunt pasionați de jocurile pe calculator și tocmai au descoperit cea mai recentă versiune a jocului .
Regulile jocului sunt foarte simple:
- se pornește de la un șir de piese pe care sunt înscrise numere din mulțimea {, , , , , , , , , , };
- piesele sunt așezate în locații numerotate consecutiv cu numerele , , ..., ;
- la fiecare pas, poate avea loc o MUTARE la STÂNGA sau o MUTARE la DREAPTA;
- pentru fiecare joc este stabilit un număr maxim de mutări ;
Dacă are loc o MUTARE la DREAPTA, atunci:
- piesele pot fuziona la dreapta, începând cu penultima piesă din şir: dacă o piesă se află pe o poziție și are înscrisă valoarea , iar pe poziția se află o piesă cu aceeași valoare , atunci aceste piese vor "fuziona", pe poziția se va obține o piesă cu valoarea , iar pe poziția rămâne o locație liberă;
- după efectuarea fuzionărilor, piesele se aliniază la dreapta, astfel încât ultima piesă să se afle pe poziția ;
Dacă are loc o MUTARE la STÂNGA, atunci:
- piesele pot fuziona la stânga, începând cu a doua piesă din șir: dacă o piesă se află pe o poziție și are înscrisă valoarea , iar pe poziția se află o piesă cu aceeași valoare , atunci aceste piese vor "fuziona", pe poziția se va obține o piesă cu valoarea , iar pe poziția rămâne o locație liberă;
- după efectuarea fuzionărilor, piesele se aliniază la stânga, astfel încât prima piesă să se afle pe poziția ;
Jocul se încheie atunci când se ajunge în una dintre următoarele situații:
- pe cel puțin una dintre piese se află înscrisă valoarea ;
- valorile înscrise nu se mai pot modifica prin mutarea pieselor;
- s-au efectuat toate cele mutări.
Cerinţe
Scrieţi un program care să citească numerele naturale (numărul inițial de piese) și (numărul maxim de mutări), un șir de numere reprezentând, în ordine, numerele înscrise pe cele piese și cel mult caractere din mulțimea {S
, D
} ce reprezintă mutările fixate de către Ada și Ben, și care determină:
- numărul de mutări efectuate până la încheierea jocului;
- numărul maxim inscris pe una dintre piese la încheierea jocului;
- numărul maxim de fuzionări efectuate la o mutare.
Date de intrare
Fişierul de intrare 2048.in
conţine pe prima linie, separate prin câte un spaţiu, numerele și . A doua linie a fişierului conţine cele numere inscrise, în ordine, pe piese, separate prin câte un spaţiu. A treia linie a fișierului conține cele caractere, separate prin câte un spaţiu, ce reprezintă cele direcții de mutare.
Date de ieşire
Fişierul de ieşire 2048.out
va conţine pe prima linie numărul , pe a doua linie numărul și pe a treia linie numărul .
Restricţii şi precizări
- ;
- caracterul
D
indică o mutare la dreapta, iar caracterulS
indică o mutare la stânga; - pentru rezolvarea cerinţei se acordă din punctaj
- pentru rezolvarea cerinţei se acordă din punctaj
- pentru rezolvarea cerinţei se acordă din punctaj
Exemplu
2048.in
7 10
16 4 4 2 2 4 8
D D S D S D S S D D
2048.out
4
32
2
Explicație
Succesiunea de mutări este reprezentată în figura .
Au fost efectuate mutări până la încheierea jocului, cea mai mare valoare înscrisă pe una dintre piese fiind . Numărul maxim de fuzionări, două, a fost obținut la prima mutare.