Operaciones sobre una secuencia S39735


Statement
 

pdf   zip

Escribe un programa que mantenga una secuencia de enteros i una posición dentro de la secuencia. Inicialmente, la secuencia está vacía y la posición está al final (es decir, detrás del último elemento, no se encuentra sobre ningún elemento).

El programa debe leer y ejecutar una secuencia de comandos. Los comandos posibles son:

  • ins x: Inserta el entero xx justo delante de la posición actual. Después, la posición apunta al nuevo elemento insertado.

  • del: Si la secuencia está vacía o la posición está al final, no hace nada. En caso contrario, borra el elemento apuntado por la posición y la posición pasa a apuntar al que era el siguiente elemento (o al final, si el elemento borrado era el último).

  • ++: Si la posición no está al final, avanza al siguiente elemento. En caso contrario, no hace nada.

  • --: Si la secuencia está vacía o la posición está en el primer elemento, no hace nada. En caso contrario, retrocede al elemento anterior.

Por ejemplo, partiendo de la secuencia vacía, ins 3 inserta el 3 y la posición lo apunta. Luego, ins 1 inserta el 1 justo delante del 3 y la posición apunta al 1. Con ++ la posición avanza hasta el 3. Finalmente, ins 2 inserta el 2 justo delante del 3 y la posición lo apunta. La secuencia resultante es 1 [2] 3 (los corchetes indican la posición).

Después de ejecutar todos los comandos, el programa debe escribir la secuencia resultante con la posición marcada.

Observación

La eficiencia del programa es importante: hay que elegir el contenedor adecuado para que las operaciones de inserción y borrado se hagan en tiempo constante. De lo contrario, el programa no pasará los juegos de pruebas de eficiencia.

Entrada

La entrada consiste en una secuencia de comandos, uno por línea. Cada comando puede ser ins (seguido de un espacio y un entero), del, ++ o --.

Salida

La salida es una línea con los elementos de la secuencia separados por espacios. El elemento apuntado por la posición se muestra entre corchetes (por ejemplo, [5]). Si la posición está al final, se escribe [] al final (con un espacio de separación si la secuencia no está vacía). Si la secuencia está vacía, se escribe únicamente [].

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
    Spanish
    Translator
    Pau Fernández
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++