Algoritmul Radix Sort folosit pentru sortarea unui vector format din elemente numere naturale presupune parcurgerea următorilor pași:
- se sortează elementele vectorului după ultima cifră, iar în caz de egalitate după poziția inițială din șir;
- se sortează elementele vectorului după penultima cifră, iar în caz de egalitate după poziția de la pasul precedent;
- se repetă această operație până la cifra cea mai semnificativă (de ordin maxim) din scrierea numerelor din șir.
De exemplu, pentru șirul , algoritmul presupune efectuarea următorilor pași:
- sortăm după ultima cifră și obținem: ;
- sortăm după penultima cifră și obținem: ;
- sortăm după prima cifră și obținem: .
Dacă în șirul inițial elementele au asociați indicii , iar după fiecare pas al algoritmului de sortare acești indici se scriu în ordinea corespunzătoare elementelor asociate în șirul inițial, atunci ordinea indicilor după fiecare etapă va fi:
- ;
- ;
- .
Observăm că valorile acestor șiruri reprezintă indicii inițiali ai vectorului pe care dorim să îl sortăm. Aceștia formează astfel, la fiecare pas, o permutare a numerelor de la la .
Asemănător, șirul poate să fie sortat în orice bază de numerație dacă transformăm numerele în baza și apoi aplicăm același procedeu. De exemplu, dacă șirul pe care dorim să îl sortăm este și dorim să apelăm Radix Sort în baza 2, numerele vor fi transformate în , și . În continuare vom obține următoarele șiruri pentru fiecare bit:
- sortăm după ultimul bit: ;
- sortăm după penultimul bit: ;
- sortăm după antepenultimul bit: ;
- sortăm după cel mai semnificativ bit: .
Prin urmare, permutările obținute sunt, în ordine:
- ;
- ;
- ;
- .
Cerință
Pisica Pia are un șir inițial de lungime asupra căruia a apelat algoritmul Radix Sort în baza . Din păcate, sora ei Mitzu s-a jucat cu șirul Piei și acesta a fost pierdut, dar Pia în continuare are permutările obținute la fiecare pas în urma apelării algoritmului. Ajutați-o pe Pia să descopere un posibil șir inițial.
Date de intrare
Pe prima linie a fișierului de intrare se află numărul , reprezentând numărul de teste din problemă. Prima linie a fiecărui test va conține 3 numere naturale: – reprezentând numărul elementelor din șir, – reprezentând baza folosită în apelarea algoritmului de Radix Sort și – reprezentând numărul de pași ai algoritmului. Următoarele linii conțin câte numere naturale reprezentând permutarea indicilor inițiali ai elementelor din șir după fiecare pas al algoritmului.
Date de ieșire
În fișierul de ieșire se vor afișa linii, linia conținând răspunsul pentru cel de al -lea test. Dacă testul admite soluție, acesta va conține numere naturale reprezentând elementele șirului inițial (scrise în baza 10), astfel încât, aplicând algoritmul Radix Sort în baza dată în test acestui șir, permutările indicilor elementelor din șir după fiecare pas al algoritmului să fie aceleași cu cele date în fișierul de intrare. Dacă testul în schimb nu admite soluție, pe linia se va afișa .
Restricții și precizări
- .
- .
- .
- Numărul total de elemente citite în input din toate permutările nu depășește (suma de din fiecare test este ).
- Pentru orice test care admite soluție, există o soluție care conține elemente cuprinse între și inclusiv. Se admite orice soluție corectă care conține elemente în acest interval.
# | Punctaj | Restricții |
---|---|---|
1 | 6 | , , pentru fiecare dintre cele teste. în acest caz sugerează că pentru orice test care admite soluție, există o soluție care conține numai valori până în |
2 | 6 | , pentru fiecare dintre cele teste |
3 | 11 | , pentru fiecare dintre cele teste |
4 | 13 | , pentru fiecare dintre cele teste |
5 | 17 | , pentru fiecare dintre cele teste |
6 | 19 | , pentru fiecare dintre cele teste |
7 | 28 | Restricții inițiale |
Exemplu
xidartros.in
3
5 10 3
3 4 1 5 2
2 1 5 3 4
4 3 2 5 1
3 2 4
1 2 3
2 3 1
2 3 1
3 1 2
3 2 1
3 2 1
xidartros.out
525 417 381 291 455
6 8 5
-1
Explicație
Pentru primele 2 teste, vezi explicațiile din enunțul problemei. Pentru al 3-lea test, nu există niciun șir care, sortat cu Radix Sort în baza 2, să fie sortat într-o singură instanță și să obținem permutarea .