---> 17 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 1 2 3 4 Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Арифметические выражения, использующие сложение, вычитание, умножение, деление и возведение в степень определяются следующей грамматикой:
<выражение> -> <слагаемое> | <выражение> + <слагаемое> | <выражение> - <слагаемое>
<слагаемое> -> <множитель> | <слагаемое> \(\times\) <множитель> | <слагаемое> / <множитель>
<множитель> -> <элемент> | <элемент> ^ <множитель>
<элемент> -> <переменная> | (<выражение>)
<переменная> -> a | b | ... | z
Сложение, вычитание, умножение и деление левоассоциативны, а возведение в степень правоассоциативно. Для арифметического выражения определено его дерево разбора. Это двоичное дерево, в котором внутренние узлы соответствуют бинарным операциям, а листья соответствуют переменным. Дерево строится рекурсивно.

    Дерево для переменной — это дерево из одной вершины, в которой записана эта переменная.
    Дерево для элемента, являющегося выражением в скобках, — это дерево для самого выражения.
    Дерево для множителя, являющегося элементом, — это дерево для этого элемента. Дерево для множителя вида «элемент e, возведенный в степень “множитель f”» — это дерево, в котором в корне записана операция ‘^’, левое поддерево корня — дерево для элемента e, правое поддерево корня — дерево для множителя f.
    Деревья для множителя и слагаемого определяются аналогично, с тем лишь различием, что соответствующие операции лево-ассоциативные.
Вам дано арифметическое выражение, выведите его дерево разбора.

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

Во входном файле содержится корректное арифметическое выражение, состоящее не более чем из 400 символов.

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

В выходной файл выведите дерево разбора. Дерево разбора для переменной должно быть размера \(1\times 1\) и содержать эту переменную. Дерево, в корне которого записана операция, с поддеревьями \(T_1\) и \(T_2\), которые имеют размеры \(h_1\times w_1\) и \(h_2 \times w_2\) соответственно, должно быть размера \((max [h_1; h_2] + 2) \times (w_1 + w_2 + 5)\). Подробнее о формате вывода можно узнать, изучив пример выходного файла (см. ниже). Следует использовать следующие вспомогательные символы: минус ‘-’ (код ASCII 45), точка ‘.’ (код ASCII 46), вертикальная черта ‘|’ (код ASCII 124), квадратные скобки ‘[’ и ‘]’ (коды ASCII 91 and 93).

Примеры
Входные данные
(a+b+c)*(d-a)
Выходные данные
         .----[*]----.   
         |           |   
   .----[+]-.     .-[-]-.
   |        |     |     |
.-[+]-.     c     d     a
|     |                  
a     b                  
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Ася Вуткина - известный футбольный комментатор. Будучи профессионалом своего дела, Ася тщательно следит за всеми матчами всех европейских чемпионатов.

Благодаря накопленной информации, Ася может во время трансляции матча сообщить какую-нибудь интересную статистику, например: "Индзаги третий матч подряд забивает гол на 9-й минуте" или "Матерацци никогда не открывает счет в матче".

Но мозг Аси не безграничен, а помнить всю историю футбола просто невозможно. Поэтому Ася попросила вас написать программу, которая собирает статистику матчей и умеет отвечать на некоторые запросы, касающиеся истории футбола.

Информация о матче сообщается программе в следующей форме:

"Название 1-й команды" - "Название 2-й команды" Счет 1-й команды:Счет 2-й команды

Автор 1-го забитого мяча 1-й команды Минута, на которой был забит мяч'

Автор 2-го забитого мяча 1-й команды Минута, на которой был забит мяч'

...

Автор последнего забитого мяча 1-й команды Минута, на которой был забит мяч'

Автор 1-го забитого мяча 2-й команды Минута, на которой был забит мяч'

...

Автор последнего забитого мяча 2-й команды> <Минута, на которой был забит мяч>'

Запросы к программе бывают следующих видов:

Total goals for Название команды

- количество голов, забитое данной командой за все матчи.

Mean goals per game for Название команды

- среднее количество голов, забиваемое данной командой за один матч. Гарантирутся, что к моменту подачи такого запроса команда уже сыграла хотя бы один матч.

Total goals by Имя игрока

- количество голов, забитое данным игроком за все матчи.

Mean goals per game by Имя игрока

- среднее количество голов, забиваемое данным игроком за один матч его команды. Гарантирутся, что к моменту подачи такого запроса игрок уже забил хотя бы один гол.

Goals on minute Минута by Имя игрока

- количество голов, забитых данным игроком ровно на указанной минуте матча.

\texttt{Goals on first <\(T\)> minutes by <Имя игрока>}\\ --- количество голов, забитых данным игроком на минутах с первой по \(T\)-ю включительно.

Goals on last \(T\) minutes by Имя игрока

- количество голов, забитых данным игроком на минутах с \((91 - T)\)-й по 90-ю включительно.

Score opens by Название команды

- сколько раз данная команда открывала счет в матче.

Score opens by Имя игрока

- сколько раз данный игрок открывал счет в матче.

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

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

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

Все названия команд и имена игроков состоят только из прописных и строчных латинских букв и пробелов, а их длина не превышает 30. Прописные и строчные буквы считаются различными. Имена и названия не начинаются и не оканчиваются пробелами и не содержат двух пробелов подряд. Каждое имя и название содержит хотя бы одну букву.

Минута, на которой забит гол - целое число от 1 до 90 (про голы, забитые в дополнительное время, принято говорить, что они забиты на 90-й минуте).

Для простоты будем считать, что голов в собственные ворота в европейских чемпионатах не забивают, и на одной минуте матча может быть забито не более одного гола (в том числе на 90-й). Во время чемпионата игроки не переходят из одного клуба в другой.

Количество запросов во входном файле не превышает 500.

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

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

Примеры
Входные данные
"Juventus" - "Milan" 3:1
Inzaghi 45'
Del Piero 67'
Del Piero 90'
Shevchenko 34'
Total goals for "Juventus"
Total goals by Pagliuca
Mean goals per game by Inzaghi
"Juventus" - "Lazio" 0:0
Mean goals per game by Inzaghi
Mean goals per game by Shevchenko
Score opens by Inzaghi
Выходные данные
3
0
1.0
0.5
1.0
0
Входные данные
Total goals by Arshavin
Выходные данные
0

Страница: << 1 2 3 4 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест