Олимпиадный тренинг

Задача . C. Плюсы и минусы


Задача

Темы: математика *1300

Вам задана строка \(s\) состоящая только из символов + и -. Вы выполняете некоторый процесс с этой строкой. Этот процесс можно описать следующим псевдокодом:

res = 0
for init = 0 to inf
cur = init
ok = true
for i = 1 to |s|
res = res + 1
if s[i] == '+'
cur = cur + 1
else
cur = cur - 1
if cur < 0
ok = false
break
if ok
break

Обратите внимание, что \(inf\) обозначает бесконечность, а символы строки пронумерованы от \(1\) до \(|s|\).

Вам нужно определить значение переменной \(res\) после выполнения процесса.

Входные данные

Первая строка содержит целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов входных данных.

Единственная строка каждого набора входных данных содержит строку \(s\) (\(1 \le |s| \le 10^6\)), состоящую только из символов + и -.

Гарантируется, что сумма \(|s|\) по всем наборам входных данных не превосходит \(10^6\).

Выходные данные

На каждый набор входных данных выведите ответ — значение переменной \(res\) после завершения процесса.


Примеры
Входные данныеВыходные данные
1 3
--+-
---
++--+-
7
9
6

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя