Fişierul intrare/ieşire: | move.in, move.out | Sursă | Algoritmiada 2013, Runda 3 |
Autor | Cosmin Silvestru Negruseri | Adăugată de | |
Timp execuţie pe test | 0.15 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Move
Fie o permutare P de lungime N. Se cere sa se sorteze permutarea in ordine crescatoare folosind un numar minim de operatii de tipul move(i , j) care plaseaza elementul de valoare i imediat dupa elementul de valoare j. Daca doriti sa mutati elementul de valoare i chiar la inceputul permutarii, parametrul j va fi egal cu 0.
Date de intrare
Fisierul de intrare move.in contine pe prima sa linie numarul N, iar pe a doua linie permutarea de lungime N.
Date de ieşire
Fisierul de iesire move.out va contine pe prima sa linie valoarea min, semnificand numarul minim de operatii necesar pentru a sorta permutarea. Urmatoarele min linii vor fi de forma a b, cu semnificatia ca se efectueaza operatia move(a, b). Daca doriti ca elementul a sa ajunga la inceputul permutarii, atunci b va fi egal cu 0.
Restricţii
- 1 ≤ N ≤ 105
- Pentru ca o operatie move(a, b) sa fie considerata valida, trebuie ca a != b.
Exemplu
move.in | move.out |
---|---|
3 3 1 2 | 1 3 2 |
Explicaţie
O singura mutare este suficienta pentru a aduce permutarea la permutarea identica.