Prefix més llarg ben-parentitzat.

Preliminars:

En aquests preliminars expliquem qué és un mot ben-parentitzat sobre
(,),[,]. Si ja teniu clar aquest concepte, podeu deixar de llegir els
preliminars i anar directament a l’exercici en sí.

Un mot ben parentitzat és un string s format amb els caràcters d’obrir i
tancar parèntesis o corxets, és a dir (,),[,], que cumpleix el següent.
A base de reemplaçar la subseqüència () pel mot buit, i la subseqüència
[] pel mot buit, tant com sigui possible, s s’acaba convertint en el mot
buit.

Per exemple, considereu el mot (()[()[]]). Si reemplacem les dues
ocurrències de () pel mot buit ens queda ([[]]). Ara, si reemplacem la
ocurrència de [] pel mot buit ens queda ([]). Ara, si reemplacem la nova
ocurrència de [] pel mot buit ens queda (). Finalment, si reemplacem la
nova ocurrència de () pel mot buit ens queda el mot buit. Per tant, el
mot inicial era ben parentitzat.

Considereu aquest altre exemple: ([()[])]. Si reemplacem la ocurrència
de () i la ocurrència de [] per mots buits ens queda ([)]. Aquí ja no
podem aplicar cap més reemplaçament. Per tant, el mot inicial no era
ben-parentitzat.

Exercici:

Tindrem strings d’entrada sobre (,),[,] que poden no ser
ben-parentitzats. Heu d’implementar un programa que, per a cada entrada,
escriu la longitut del prefix més llarg ben-parentitzat.

Observació: Podeu seguir l’enfoc que considereu oportú, i podeu
utilitzar qualsevol de les estructures de dades presentades al curs
(string, vector, stack, queue, list, map, set) de la manera que
considereu oportuna. Noteu, però, que enfocaments diferents poden donar
lloc a solucions més o menys eficients, i que superin només els jocs de
proves públics o tots els jocs de proves, de manera que la nota acabarà
depenent d’això.

Entrada

L’entrada conté un nombre arbitrari de casos, un per línia. Cada cas
consisteix en un string no buit sobre (,),[,].

Sortida

Per a cada cas d’string s d’entrada, escriviu en una línia la longitut
del prefix més llarg de s que és ben-parentitzat.

Observació

Avaluació sobre 10 punts:

- Solució lenta: 5 punts.

- solució ràpida: 10 punts.

Entenem com a solució lenta una que és correcta, de cost major que
lineal i capaç de superar els jocs de proves públics. Entenem com a
solució ràpida una que és correcta, de cost lineal i capaç de superar
els jocs de proves públics i privats.

Informació del problema

Autoria: PRO2

Generació: 2026-01-25T14:05:53.294Z

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