Longitud de segments constants als extrems d’una llista.

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 major nombre d’elements iguals començant des del principi o 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:

Observació

Per tal de superar els jocs de proves públics i aconseguir una nota raonable, podeu fer una implementació senzilla mantenint la llista representada en un list<int>, i a on el càlcul de max_equal_left i max_equal_right tingui cost lineal i consisteixi en recorrer la llista des del principi o final mentre hi trobem elements idèntics. De fet, us recomanem que no us lieu i seguiu aquest enfoc.

Però 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 més eficient.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T16:00:35.309Z

© Jutge.org, 2006–2026.
https://jutge.org