Fişierul intrare/ieşire:move.in, move.outSursăAlgoritmiada 2013, Runda 3
AutorCosmin Silvestru NegruseriAdăugată deklamathixMihai Calancea klamathix
Timp execuţie pe test0.3 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/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.inmove.out
3
3 1 2
1
3 2

Explicaţie

O singura mutare este suficienta pentru a aduce permutarea la permutarea identica.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content