Specchio

Un albero è formato da una radice e da un insieme finito e ordinato (eventualmente vuoto) di figli, che sono anch’essi alberi.
Ad esempio, la Figura 1 rappresenta un albero: per convenzione, la radice viene disegnata in cima (cioè al contrario rispetto agli alberi veri).
Come ogni albero, lo potete descrivere dicendo quanti figli ha la radice (in questo caso, quattro) e poi descrivendo uno a uno, nell’ordine da sinistra a destra, i quattro sottoalberi.
In questo modo, ad esempio, l’albero in Figura 1 sarebbe identificato dalla seguente sequenza: 4 2 0 3 0 0 1 0 0 0 0

oii_2002_specchio1
Figura 1.
Un albero.

Infatti, l’albero ha quattro figli sotto la radice, per cui il primo numero è 4.
D’altra parte, 2 0 3 0 0 1 0 è la descrizione del primo figlio, mentre gli ultimi tre figli sono ciascuno descritti da 0 (dato che non hanno figli).

Supponete di guardare l’albero riflesso in uno specchio. L’ordine dei figli di ciascun nodo risulta invertito.
Per esempio, l’albero di Figura 1 appare come in Figura 2.

oii_2002_specchio2
Figura 2.
L’albero di Figura 1 allo specchio.

Questo nuovo albero è descritto dalla sequenza: 4 0 0 0 2 3 1 0 0 0 0

Dati in input

Il file di input, di nome input.txt, contiene una sola riga con una sequenza di interi non negativi, separati da uno spazio.
La sequenza descrive correttamente un albero: quindi il primo numero è il numero di figli della radice, ed è seguito dalle descrizioni dei figli, uno dopo l’altro, da sinistra a destra.

Dati in output

Il file di output, di nome output.txt, contiene una sola riga, costituita da una sequenza di interi non negativi separati da uno o più spazi.
Questa sequenza è la descrizione dell’albero dato in input visto allo specchio.

Assunzioni

  • il tempo limite di esecuzione è fissato in 2 secondi;
  • il file di input contiene al massimo 20000 interi;
  • nessun nodo dell’albero ha più di 100 figli;

Esempio

input.txt output.txt
4 2 0 3 0 0 1 0 0 0 0 4 0 0 0 2 3 1 0 0 0 0