Codeforces Round 123 (Div. 2) |
---|
Закончено |
Вася разрабатывает свой язык программирования VPL (Vasya Programming Language). Сейчас он занят созданием системы исключений. В его представлении система исключений должна функционировать следующим образом.
Для обработки исключений используются try-catch-блоки. Работа с блоками осуществляется при помощи двух операторов:
Исключения могут возникать в программе только в одном случае: при использовании оператора throw. Оператор throw(<тип_исключения>) создает исключение указанного типа.
Пусть в результате вызова какого-то оператора throw в программе возникло исключение типа a. В этом случае активируется try-catch-блок такой, что оператор try этого блока описан в программе раньше, чем вызванный оператор throw, при этом оператору catch этого блока в качестве параметра передан тип исключения a, и оператор catch этого блока описан позже, чем вызванный оператор throw. Если таких try-catch-блоков несколько, активируется тот блок, описание оператора catch которого встречается раньше всех. Если ни один try-catch-блок не был активирован, то на экран выводится сообщение «Unhandled Exception».
Для тестирования системы, Вася составил программу, в которой содержатся только операторы try, catch и throw, в одной строке находится не более одного оператора, во всей программе присутствует ровно один оператор throw.
Ваша задача в том, чтобы по программе на VPL определить, какое сообщение будет выведено на экран.
В первой строке записано одно целое число: n (1 ≤ n ≤ 105) — количество строк в программе. В следующих n строках записана программа на языке VPL. В каждой строке содержится не более одного оператора. Это означает, что во входных данных могут встречаться пустые строки или строки, состоящие только из пробелов.
В программе присутствуют только операторы try, catch и throw. Гарантируется, что программа корректна. Это означает, что каждый начатый try-catch-блок был закрыт, операторы catch не используются, если нет открытого try-catch-блока. В программе присутствует ровно один оператор throw. В программе могут присутствовать пробелы в начале строки, в конце строки, перед и после скобок, запятых и кавычек.
Тип исключения — это непустая строка, состоящая только из прописных и строчных букв латинского алфавита. Длина типа исключения не превосходит 20 символов. Сообщение — это непустая строка, состоящая только из прописных и строчных букв латинского алфавита, цифр и пробелов, заключенная в кавычки. Кавычки выводить не надо. Длина сообщения не превосходит 20 символов. Длина любой строки входного файла не превосходит 50 символов.
Выведите сообщение, которое будет написано на экране после выполнения заданной программы.
8
try
try
throw ( AE )
catch ( BE, "BE in line 3")
try
catch(AE, "AE in line 5")
catch(AE,"AE somewhere")
AE somewhere
8
try
try
throw ( AE )
catch ( AE, "AE in line 3")
try
catch(BE, "BE in line 5")
catch(AE,"AE somewhere")
AE in line 3
8
try
try
throw ( CE )
catch ( BE, "BE in line 3")
try
catch(AE, "AE in line 5")
catch(AE,"AE somewhere")
Unhandled Exception
В первом примере существует 2 try-catch блока, для которых оператор try описан раньше оператора throw, а оператор catch описан позже оператора throw: try-catch(BE,"BE in line 3") и try-catch(AE,"AE somewhere"). Тип исключения AE, а значит будет активирован второй блок, так как в операторе catch(AE,"AE somewhere") указан тип исключения AE, а в операторе catch(BE,"BE in line 3") указан тип BE.
Во втором примере существует 2 try-catch блока, для которых оператор try описан раньше оператора throw, а оператор catch описан позже оператора throw: try-catch(AE,"AE in line 3") и try-catch(AE,"AE somewhere"). В данном случае оба блока могут быть активированы исключением типа AE, но будет активирован только блок try-catch(AE,"AE in line 3"), так как оператор catch(AE,"AE in line 3") описан раньше, чем catch(AE,"AE somewhere").
В третьем примере не существует блоков, способных обработать исключение типа CE.
Название |
---|