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