Operacions sobre una seqüència S39735


Statement
 

pdf   zip

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 xx 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.

Observació

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.

Entrada

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 --.

Sortida

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 [].

Public test cases
  • 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 []
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Other languages
    Spanish
    Official solutions
    C++
    User solutions
    C++