Главная > Выражение | ||||||||||
1995 |
Задано арифметическое выражение, содержащее неотрицательные целые константы (неограниченного размера), знаки арифметических операций: "+", "-" (бинарный), "/", "*" и круглые скобки. По определенным правилам выражение графически изображается в виде двоичного дерева. Операции располагаются в вершинах дерева, а операнды образуют левое и правое поддеревья вершины с данной операцией. На рисунке приведен пример графического изображения выражения (57+14)*35. Требуется для данного выражения определить размеры (высоту и ширину) его графического изображения. Известно, что если A и B - операнды операции r, а HA и WA - высота и ширина графического представления выражения A, HB и WB - высота и ширина графического представления выражения B, то высотой и шириной графического представления выражения ArB будут 2+max(HA,HB) и 3+WA+WB соответственно. Для константы высота графического представления - 3, а ширина равняется количеству цифр в записи константы + 2. Например, если выражение A имеет высоту и ширину 1 и 3, выражение B имеет высоту и ширину 5 и 5, то выражение A*B будет иметь высоту 7 и ширину 11. Формат входных данных Файл исходных данных содержит одно или несколько выражений. Каждое выражение записывается на отдельной строке. Максимальная длина выражения - 80 символов. Файл исходных данных не содержит пробелов и пустых строк. Формат выходных данных Для каждого выражения вывести в выходной файл на отдельной строке высоту и ширину графического представления. Примечание Дерево выражения соответствует порядку применения операций к операндам. Предполагается стандартный приоритет операций (умножение и деление выполняется раньше сложения и вычитания). Операции с одинаковым приоритетом (+ и -, * и /) выполняются в порядке слева направо. Например, для выражения 1+2*3-4-5 порядок выполнения операций (показанный дополнительными скобками) следующий: ((1+(2*3))-4)-5. Пример
|