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

Задача . B. Поймай переполнение!


Задана функция \(f\), написанная на довольно примитивном языке. Функция принимает целое значение, которое сразу записывается в переменную \(x\). \(x\) — это целочисленная переменная, которая может принимать значения от \(0\) до \(2^{32}-1\). Функция содержит три типа команд:

  • for \(n\) — цикл for;
  • end — каждая команда между «for \(n\)» и соответствующим «end» выполняется \(n\) раз;
  • add — прибавляет 1 к \(x\).

После выполнения команд возвращается значение \(x\).

Каждый «for \(n\)» имеет парный «end», поэтому гарантируется, что функция корректна. За «for \(n\)» может сразу следовать «end». «add» может быть расположен вне циклов for.

Заметили, что команда «add» может переполнить значение \(x\)! Это значит, что значение \(x\) становится больше \(2^{32}-1\) после некоторой команды «add».

Теперь запускается \(f(0)\), а ваша задача — узнать, корректно ли полученное значение \(x\) или переполнение сделает его некорректным.

Если произошло переполнение, то выведите «OVERFLOW!!!», иначе выведите полученное значение \(x\).

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

В первой строке записано одно целое число \(l\) (\(1 \le l \le 10^5\)) — количество строк в функции.

В каждой из следующих \(l\) строк записана одна команда одного из трех типов:

  • for \(n\) (\(1 \le n \le 100\)) — цикл for;
  • end — каждая команда между «for \(n\)» и соответствующим «end» выполняется \(n\) раз;
  • add — прибавляет 1 к \(x\).
Выходные данные

Если во время выполнения \(f(0)\) произошло переполнение, то выведите «OVERFLOW!!!», иначе выведите полученное значение \(x\).

Примечание

В первом примере первая команда «add» выполнится 1 раз, вторая — 150 раз и последняя — 10 раз. Обратите внимание, что за «for \(n\)» может сразу следовать «end» и что «add» может быть расположен вне циклов for.

Во втором примере нет команд «add», поэтому полученное значение равно 0.

В третьем примере команда «add» выполняется слишком много раз, что делает значение \(x\) больше \(2^{32}-1\).


Примеры
Входные данныеВыходные данные
1 9
add
for 43
end
for 10
for 15
add
end
add
end
161
2 2
for 62
end
0
3 11
for 100
for 100
for 100
for 100
for 100
add
end
end
end
end
end
OVERFLOW!!!

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

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