Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Объединение

(Время: 1 сек. Память: 16 Мб Сложность: 66%)

Сергей Александрович собирается организовать на втором курсе группу со специальным учебным планом, базирующимся на методике МФТИ и ориентированным на спортивное программирование. За время летних каникул студенты принесли Сергею Александровичу коллективные заявления на перевод в эту группу или перевод из неё. Сергей Александрович поручил Саше составить список студентов, которые в итоге будут переведены. Саша решил взяться за работу по-научному.

Так как всего студентов, фигурирующих в заявлениях, не более 26, Саша обозначил студентов заглавными английскими буквами. Авторов одного заявления он объединил в группы. Каждая группа состоит из некоторого (возможно, пустого, если всех авторов заявления уже успели отчислить) множества студентов и записывается как список соответствующих студентам букв, заключённый в фигурные скобки. Действия, указанные студентами в заявлениях, он обозначил следующим образом.

Пусть даны группы g1 и g2. Тогда операции создают новую группу по следующим правилам:

  • (g1+g2): операция ‘+’ между группами означает, что результат – объединение групп, т.е. в итоговый список включаются все те студенты, которые имеются или в g1 или в g2.
  • (g1*g2): операция ‘*’ между двумя группами означает, что результат – пересечение групп, т.е. только те студенты, которые находятся как в g1, так и в g2.
  • (g1-g2): операция ‘-’ между группами означает, что результат – студенты группы g1, за исключением тех, которые перечислены в группе g2.
  • Операции имеют приоритет: приоритет операции ‘*’ выше, чем у ‘+’ и ‘-’. Операции с равным приоритетом выполняются слева направо (т.е. имеют левую ассоциативность).
  • Круглые скобки ‘(’ и ‘)’ используются для группировки операндов выражений аналогично тому, как они это делают в арифметических выражениях.

В результате у Саши получилась своеобразная формула. Ваша задача – по формуле вычислить итоговый состав новой группы.

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

Входной файл INPUT.TXT содержит формулу. Длина формулы не превышает 260 символов. В записи формулы использованы круглые и фигурные скобки, знаки ‘+’, ‘*’, ‘-’ и большие английские буквы.

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

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

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

Примеры

INPUT.TXTOUTPUT.TXT
1{ABC}{ABC}
2{ABC}+{DEFG}+{Z}+{}{ABCDEFGZ}
3{ABE}*{ABCD}{AB}
4{ABCD}-{CZ}{ABD}
5{ABC}+{CDE}*{CEZ}{ABCE}
6(({ABC}+{CDE}))*{CEZ}{CE}

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Личные олимпиады
 Командные олимпиады
 Первая командная олимпиада
 Вторая командная олимпиада
 Третья командная олимпиада
 Четвертая командная олимпиада
 Пятая командная олимпиада
 A. BoxStation
 B. Объединение
 C. Сложная функция
 D. Пастух
 E. Рациональный множитель
 F. Bizons
 G. Квадрат
 H. Гонки

Красноярский краевой Дворец пионеров, (c)2006 - 2023, ИНН 246305493507, E-mail: admin@acmp.ru