Invertire la lista collegata a blocchi

Data una lista collegata (linked list), l’obiettivo è invertire blocchi di lunghezza l a partire dall’inizio fino alla fine della lista, finché non ci sono più blocchi da elaborare.

Ingresso

I dati iniziali della lista collegata vengono generati automaticamente e non è necessario intervenire.
Nella riga successiva compare un unico intero l (1 ≤ l ≤ |L|), che rappresenta la lunghezza dei blocchi da invertire.

Uscita

Il programma deve stampare la lista collegata finale dopo l’inversione a blocchi.

Esempi

Ingresso
Uscita
10 4 0 -2 3 5 7 -1 8 -9 3 5
5 3 -2 0 4 3 -9 8 -1 7
10 4 0 -2 3 5 7 -1 8 -9 3 2
0 4 3 -2 7 5 8 -1 3 -9
10 4 0 -2 3 5 7 -1 8 -9 3 1
4 0 -2 3 5 7 -1 8 -9 3
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue