Я бы поддерживал возможные значения балансов как отрезок [L, R].
Типа открывающая скобочка увеличивает обе границы на 1. Закрывающая уменьшает обе на 1. Звезда левую уменьшает, правую увеличивает. Но при этом левая всегда неотрицательная. Если в какой-то момент правая зашла за левую, то мы проиграли.