 OLIMPIC | Описание Кухарка в Герцогиню метнула: банку, склянку, вилку, ложку и неочищенную картошку. Вилку она метнула позже банки, но не позже склянки, ложку - раньше склянки, но не раньше банки. Восстановите последовательность брошенных предметов, если неочищенная картошка предшествовала ложке и была пущена вслед за вилкой. Решить эту задачу устно не представляет труда. Вот искомая последовательность метания: банка, вилка, неочищенная картошка, ложка, склянка. Вам предлагается научить компьютер решать подобные задачи. Условимся задавать имена брошенных предметов последовательностью строчных латинских букв не длиннее 100 символов. Порядок метания будем задавать английскими словами: later (позднее), earlier (раньше), before (перед), after (вслед). Later и earlier означают не только непосредственное предшествование или отставание. Перед этими словами может стоять отрицание not. Оно изменяет смысл слова на противоположный. Например: not later = earlier, not earlier = later. a before b означает, что предмет a непосредственно предшествует предмету b a after b означает, что предмет a был брошен сразу за предметом b Из имен предметов и порядковых слов образуются высказывания. Высказывание имеет следующую структуру: <имя предмета> <порядковое слово> <имя предмета> Каждое высказывание задается в отдельной строке входного файла. Элементы высказывания разделяются одним пробелом. Например, если предметам исходной задачи присвоить имена: ba - банка, sk - склянка, vi - вилка, lo - ложка и ka - неочищенная картошка, то высказывания о порядке метания примут вид: vi later ba vi not later sk lo earlier sk lo not earlier ba ka before lo ka after vi Задание Требуется написать программу, которая по списку высказываний определит порядок метания, если порядков несколько, то любой, или укажет, что решений не существует. Технические условия Исходный файл: OLIMPIC Входной файл: OLIMPIC.IN Выходной файл: OLIMPIC.OUT Входные данные Формат входного файла: В каждой строке входного файла записано одно высказывание в соответствии с изложенными выше правилами. Всего высказываний не более 130. Выходные данные Выходной файл содержит одну строку с порядком метания предметов, удовлетворяющим всем высказываниям. Имена предметов разделяются одним пробелом. После последнего имени пробел отсутствует. Если порядков может быть несколько, то выводится любой из них. Если решения нет, то выводится "No solution". Пример: OLIMPIC.IN vi later ba vi not later sk lo earlier sk lo not earlier ba ka before lo ka after vi OLIMPIC.OUT ba vi ka lo sk
|
|---|