Latam++
En un lenguaje, una variable es una o más letras minúsculas, y las expresiones válidas son exactamente las que se obtienen con estas reglas:
- una variable es una expresión válida;
- si \(A\) es válida, \((A)\) también lo es;
- si \(A\) y \(B\) son válidas, \(A\,c\,B\) también lo es, donde \(c\) es uno de
+,-,*o/.
Por ejemplo, a+b*(c+b) y (((a)))*(bb/a/a) son válidas, pero a+, a+b(c+b) y ((()))*(a) no.
Dado un texto \(S\), cuenta cuántos de sus subtextos contiguos son expresiones válidas. Dos subtextos son distintos si empiezan o terminan en posiciones distintas, aunque tengan los mismos caracteres.
Entrada
Una línea con el texto \(S\) \((1 \le |S| \le 2 \cdot 10^5)\), formado por letras minúsculas, paréntesis y
los caracteres +, -, * y /.
Salida
Una línea con la cantidad de subtextos que son expresiones válidas.
Ejemplo 1
Entrada
a+b(c+b)
Salida
7
Ejemplo 2
Entrada
aa
Salida
3
Ejemplo 3
Entrada
a-a
Salida
3
Regional Latinoamericana 2023 del ICPC, problema L («Latam++»). Versión en español redactada para este juez; el enunciado oficial, en inglés, está aquí abajo.
Comentarios