Escriu un programa que mantingui una seqüència d’enters i una posició dins de la seqüència. Inicialment, la seqüència és buida i la posició és al final (és a dir, darrere l’últim element, no es troba sobre cap element).
El programa ha de llegir i executar una seqüència de comandes. Les comandes possibles són:
ins x: Insereix l’enter
just davant de la posició actual. Després, la posició apunta al nou
element inserit.
del: Si la seqüència és buida o la posició és al
final, no fa res. Altrament, esborra l’element apuntat per la posició i
la posició passa a apuntar al que era el següent element (o al final, si
l’element esborrat era l’últim).
++: Si la posició no és al final, avança al següent
element. Altrament, no fa res.
--: Si la seqüència és buida o la posició és al
primer element, no fa res. Altrament, retrocedeix a l’element
anterior.
Per exemple, partint de la seqüència buida, ins 3
insereix el 3 i la posició hi apunta. Després, ins 1
insereix l’1 just davant del 3 i la posició apunta a l’1. Amb
++ la posició avança fins al 3. Finalment,
ins 2 insereix el 2 just davant del 3 i la posició hi
apunta. La seqüència resultant és 1 [2] 3 (els claudàtors
indiquen la posició).
Després d’executar totes les comandes, el programa ha d’escriure la seqüència resultant amb la posició marcada.
L’eficiència del programa és important: cal triar el contenidor adequat perquè les operacions d’inserció i esborrat es facin en temps constant. En cas contrari, el programa no passarà els jocs de prova d’eficiència.
L’entrada consisteix en una seqüència de comandes, una per línia.
Cada comanda pot ser ins (seguida d’un espai i un enter),
del, ++ o --.
La sortida és una línia amb els elements de la seqüència separats per
espais. L’element apuntat per la posició es mostra entre claudàtors (per
exemple, [5]). Si la posició és al final, s’escriu
[] al final (amb un espai de separació si la seqüència no
és buida). Si la seqüència és buida, s’escriu únicament
[].
Input
ins 3 ins 1 ++ ins 2
Output
1 [2] 3
Input
ins 1 ins 2 ins 3 del ++ ins 4 ++ ++
Output
2 4 1 []