Longitud de segments amb elements d'igual valor als extrems d'una llista X42679


Statement
 

pdf   zip

html

Escriviu un programa que simuli el manteniment d’una llista d’enters, a base de llegir instruccions que la van actualitzant, i instruccions que la van consultant. La llista d’enters se suposa inicialment buida, i les instruccions son dels següents tipus: afegir elements al principi o final de la llista, treure elements del principi o final de la llista, o consultar quin és el nombre d’elements iguals i consecutius que es troben al principi de la llista, o al final de la llista.

És obligatori utilitzar només el constructor de tipus list com a mecanisme d’emmagatzemament massiu de dades. En particular, no es pot usar ni vector, ni stack, ni queue. Podeu declarar tants list com volgueu i del tipus que volgueu (que no sigui cap altre mecanisme d’emmagatzemament massiu), i podeu usar iteradors sobre llistes.

Entrada

La entrada consisteix en un nombre arbitrari de linies, cadascuna amb una instrucció. Les instruccions poden ser de la següent forma:

push_front x
push_back x
pop_front
pop_back
max_equal_left
max_equal_right

Sortida

Les instruccions pop_front i pop_back poden escriure error a la sortida, i les instruccions max_equal_left i max_equal_right escriuran un valor a la sortida. Se sobreentén que la llista que simulem està inicialment buida, i que l’efecte de cada instrucció és el següent:

  • push_front x afegeix l’enter x al principi de la llista.
  • push_back x afegeix l’enter x al final de la llista.
  • pop_front elimina l’element que es troba al principi de la llista. Si la llista és buida ha d’escriure error i salt de linia.
  • pop_back elimina l’element que es troba al final de la llista. Si la llista és buida ha d’escriure error i salt de linia.
  • max_equal_left escriu quin és el nombre d’elements iguals i consecutius que es troben començant des de la part inicial de la llista.
  • max_equal_right escriu quin és el nombre d’elements iguals i consecutius que es troben començant des de la part final de la llista.

Observació

Els jocs de proves privats són grans. Per tal d’aconseguir superar-los tots i obtenir així la màxima nota, convindrà trobar un enfoc astut que faci que totes les instruccions tinguin cost constant. Això sí, només es pot utilitzar el tipus de dades list, com ja hem mencionat anteriorment.

Public test cases
  • Input

    max_equal_left
    max_equal_right
    pop_front 
    pop_back 
    push_front 0
    max_equal_left
    max_equal_right
    push_back 3
    push_back 0
    max_equal_left
    max_equal_right
    pop_back 
    push_back 3
    push_front 0
    max_equal_left
    max_equal_right
    push_front 3
    push_back 3
    max_equal_left
    max_equal_right
    push_back 3
    max_equal_left
    max_equal_right
    push_back 0
    max_equal_left
    max_equal_right
    push_front 5
    push_back 6
    push_back 6
    push_back 0
    max_equal_left
    max_equal_right

    Output

    0
    0
    error
    error
    1
    1
    1
    1
    2
    2
    1
    3
    1
    4
    1
    1
    1
    1
    
  • Input

    push_front 0
    pop_back 
    push_back 0
    max_equal_left
    push_front 0
    push_front 3
    max_equal_left
    max_equal_right
    push_front 3
    pop_front 
    push_front 3
    push_front 3
    push_back -1
    max_equal_right
    max_equal_right
    max_equal_right
    push_front 2
    push_front 2
    max_equal_right
    push_front -2
    push_front -1
    push_front 2
    push_back 2
    push_front 2
    push_front -2
    push_front -2
    push_back -2
    pop_front 
    pop_back 
    push_back -2
    pop_front 
    push_front 3
    push_back 0
    push_back 0
    max_equal_left
    push_front 2
    push_front 2
    push_front 2
    pop_back 
    push_back 2
    pop_back 
    push_front 0
    max_equal_right
    push_front 0
    push_back -1
    pop_front 
    push_front -1
    push_back -1
    push_front -2
    push_back -2
    

    Output

    1
    1
    2
    1
    1
    1
    1
    1
    1
    
  • Information
    Author
    PRO1
    Language
    Catalan
    Official solutions
    Unknown.
    User solutions
    C++