Cerință
Se dă o permutare . Într-o secundă se pot efectua oricâte interschimbări, cu condiția ca fiecare poziție să participe la cel mult una dintre ele. Interschimbarea schimbă între ele valorile de pe pozițiile și . Să se sorteze permutarea într-un număr minim de secunde.
Date de intrare
Pe prima linie se găsește un număr natural . Pe a doua linie se găsesc numere naturale, .
Date de ieșire
Pe prima linie se va găsi un număr natural , numărul minim de secunde. Urmează cele secunde, în ordine. Pentru fiecare secundă se va afișa o linie cu numărul de interschimbări efectuate în acea secundă, urmată de linii, fiecare conținând două poziții și .
Restricții și precizări
- ;
- este o permutare a numerelor ;
- Dacă există mai multe soluții, se poate afișa oricare.
| # | Punctaj | Restricții |
|---|---|---|
| 0 | 0 | Exemple |
| 1 | 40 | este par și |
| 2 | 30 | Fiecare ciclu al permutării are lungimea cel mult |
| 3 | 30 | Fără restricții suplimentare |
Un ciclu al permutării este un șir de poziții distincte cu proprietatea că , , , și . Numărul este lungimea ciclului. Fiecare poziție face parte din exact un ciclu; de exemplu, permutarea are ciclurile și , iar o poziție cu formează singură un ciclu de lungime .
Exemplul 1
stdin
5
2 3 1 5 4
stdout
2
2
2 3
4 5
1
1 2
Explicație
După prima secundă permutarea devine , iar după a doua devine .
Exemplul 2
stdin
3
1 2 3
stdout
0
Explicație
Permutarea este deja sortată.