АВТ
Language: Russian
English

Remote Training on Programming

Problems Online status Contests
News FAQ E-learning
For authors:
Register  ||  Login
 
Hello, Guest! Please login or register.

2151. Parallel Computing

Time Limit: 1 seconds
Memory Limit:262144KB
Points:100
View Problem Statistics Submit Problem added debug

Существует несколько способов записи арифметических выражений. В привычной нам (инфиксной) записи знак операции ставится между аргументами — например: "(10 - 6) * (3 + 5)". В постфиксной (или обратной польской) записи знак операции пишется после аргументов. Например, это же выражение в постфиксной записи будет выглядеть так: "10 6 - 3 5 + *".

Как видно из примера, в постфиксной записи не используются скобки, поскольку операнды для каждой операции всегда определяются однозначно.

Вычисление выражения в постфиксной записи выполняется очень просто. Идём слева направо. Встретив знак операции, берём два операнда перед ним, выполняем операцию, стираем её и оба операнда, а на это место записываем результат. Возьмём для примера наше выражение "10 6 - 3 5 + *". На первом шаге выполним вычитание — получится "4 3 5 + *". Теперь выполним сложение — получаем "4 8 *". На последнем шаге выполняем вычитание, и получаем ответ 32.

Представим теперь, что операнды у нас — не короткие числа, а очень длинные (содержащие миллионы цифр). Тогда операции с ними будут выполняться медленно. Пусть наш компьютер выполняет одну операцию за одну секунду. Тогда, чтобы вычислить выражение из примера (но с длинными операндами), ему потребуется три секунды.

Однако, современные компьютеры умеют производить вычисления параллельно! Если в нашем примере операции вычитания и сложения выполнять одновременно, то вычисление выражения займёт всего две секунды вместо трёх. Более формально: любую операцию можно начинать выполнять сразу, как только оба её операнда уже вычислены.

Напишите программу, решающую следующую задачу. На вход программы подаётся выражение в постфиксной записи. Определите, за какое минимальное время можно вычислить это выражение.

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

На вход программе подаётся строка, содержащая корректную запись выражения в постфиксной записи. Операнды обозначаются строчными английскими буквами, все буквы в строке различны. Знаками операций могут быть символы '+', '-', '*', '/'. Элементы выражения разделяются пробелом. Длина строки не превышает 101 символ.

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

Выведите одно целое число — минимальное число секунд, за которое можно вычислить выражение.

Система оценки

Подзадача 1 (до 40 баллов): выражение содержит не более трёх знаков операций.

Подзадача 2 (до 30 баллов): выражение содержит не более шести знаков операций.

Подзадача 3 (до 30 баллов): дополнительные ограничения отсутствуют.

Каждый тест оценивается независимо. Участнику сообщается результат проверки каждого теста.

Примеры

Входные данные
a b - c d + *
Выходные данные
2
Входные данные
a b + c - d +
Выходные данные
3

Примечание

Возможно, вы заметили, что можно улучшить распараллеливание с помощью эквивалентных преобразований выражений — например, 'a b + c - d +' заменить на равносильное выражение 'a b + c d - -'. Однако, в данной задаче преобразования выражений не используются.


View Problem Statistics Submit Problem discussion Author/source:
Problems from Contests and Camps / School olympiads and couses of Vologda region / All-Russian school olympiad, municipal stage / Municipal Stage 2021-22 / Forms 9-11 /
2150. 2 - Pairs of Socks 2151. 2152. 4 - Number of Triples 2153. 5 - Testing Ground for Robots
time generating 0.094 sec.
© Copyright VSU, AVT, Nosov D.A., Andrianov I.A.