Se consideră o permutare a mulţimii . Pentru această permutare se defineşte un singur tip de operaţie: se extrage din permutare un subşir, iar elementele subşirului se adaugă (în aceeaşi ordine) la începutul permutării. De exemplu, pentru permutarea , se poate alege subşirul care se introduce la începutul permutării, obţinându-se .
Cerință
Să se sorteze elementele din permutare efectuând un număr cât mai mic de operaţii (nu neapărat minim!).
Date de intrare
Fişierul specsort.in
conţine pe prima linie numărul natural , iar pe linia a doua, separate prin câte un spaţiu, cele elemente ale permutării.
Date de ieșire
Fişierul specsort.out
conţine un număr de linii egal cu numărul de operaţii efectuate. Pe a -a dintre aceste linii se găsesc câte numere naturale separate printr-un spaţiu, reprezentând permutarea obţinută după aplicarea celei de a -a operaţie.
Restricții și precizări
- Ultima linie din fişier trebuie sa conţină permutarea sortată.
Exemplu
specsort.in
7
7 4 5 1 3 6 2
specsort.out
6 7 4 5 1 3 2
4 5 6 7 1 3 2
1 2 4 5 6 7 3
1 2 3 4 5 6 7
Explicație
Subşirurile mutate la fiecare operaţie sunt: