АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

2151. Параллельные вычисления

Ограничение времени: 1 сек.
Ограничение памяти:262144 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил 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 - -'. Однако, в данной задаче преобразования выражений не используются.


Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи с соревнований и сборов / Школьные олимпиады и курсы Вологодской области / ВсОШ, муниципальные этапы / Муниципальный этап 2021-22 / Классы 9-11 /
2150. 2 - Парные носки 2151. 2152. 4 - Количество троек 2153. 5 - Полигон для роботов
 
время генерации 0.094 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.