Esiste un noto teorema secondo il quale qualsiasi permutazione può essere scomposta in una serie di cicli . Il tuo compito è quello di scrivere il programma più breve possibile per farlo.
Ingresso:
Due linee. Il primo contiene un numero N
, il secondo contiene N
interi distinti nell'intervallo [0,N-1]
separato da spazi. Questi numeri interi rappresentano una permutazione di N
elementi.
Produzione:
Una riga per ogni ciclo nella permutazione. Ogni riga dovrebbe essere un elenco separato da spazi di numeri interi in ordine di ciclo.
I cicli possono essere emessi in qualsiasi ordine e ogni ciclo può essere emesso a partire da qualsiasi posizione.
Esempio 1:
8
2 3 4 5 6 7 0 1
Questo ingresso codifica la permutazione 0-> 2, 1-> 3, 2-> 4, 3-> 5, 4-> 6, 5-> 7, 6-> 0, 7-> 1. Questo si decompone in cicli come questo:
0 2 4 6
1 3 5 7
Un output ugualmente valido sarebbe
5 7 1 3
2 4 6 0
Esempio 2:
8
0 1 3 4 5 6 7 2
uscita valida:
0
1
4 5 6 7 2 3
>C.