ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

Соревнование школьников. Октябрь 2000

Описание     Задачи     Отправить на проверку     Состояние проверки     Результаты
Соревнование завершено

H. Снова D++

Ограничение времени: 0.5 секунды
Ограничение памяти: 64 МБ

Вступление

Язык D++, в развитие которого было вложено столько сил участниками наших мартовских соревнований, продолжает совершенствоваться. Его создатели пытаются сделать синтаксис языка как можно более простым и свободным с тем, чтобы облегчить программирование на этом языке будущего. Конечно, некоторое минимальное количество правил должно остаться.
Ваша программа должна проверять соблюдение некоторых из этих правил, связанных с расстановкой скобок и комментариями.

Задача

Текст правильной программы на D++ состоит из символьной части, арифметических выражений и комментариев. Комментарии могут встречаться где угодно и содержать любые символы. Комментарий всегда открывается парой символов '(*' и заканчивается парой символов '*)'. Каждый комментарий обязательно должен закрываться. Арифметические выражения в D++ всегда открываются круглой скобкой '(', закрываются круглой скобкой ')' и могут содержать внутри себя только символы '=+-*/0123456789)(' и переводы строк. Арифметическое выражение не может начинаться с пары символов '(*'. Скобки в арифметическом выражении могут быть вложенными; при этом они обязаны быть сбалансированными. Это означает, кто как '((1)))', так и '(23))((+)' не являются правильными арифметическими выражениями. Правильность выражения определяется только правильностью расстановки в нем скобок. Наконец, весь остальной текст программы (получающийся из исходного отбрасыванием всех комментариев и арифметических выражений) может состоять из произвольных символов, за исключением символов '(' и ')'.
Отметим, что пробелы ВПОЛНЕ возможны в тексте программы везде, кроме арифметических выражений.

Исходные данные

На входе записан некоторый текст. Объем этого текста не превышает 10000 символов. В тексте могут встречаться латинские буквы, цифры, скобки, знаки арифметических действий, пробелы и переводы строк.

Результат

Выведите YES, если введенный текст является корректной программой на D++, и NO в противном случае.

Пример

исходные данные
Hello, here is a sample D++ program. It contains some arithmetical expressions like
(2+2=4), (2+-/*) and ((3+3)*3=20(*this is not true, but you don’t have to verify it :-) *)+8)
 (* the closing bracket in the previous comment is also in order, since this bracket
does not belong to any arithmetical expression*)
результат
YES
Автор задачи: Леонид Волков, Алексей Лысенко
Источник задачи: Второе командное соревнование школьников Свердловской области по программированию, 7 октября 2000
Чтобы отправить решение этой задачи на проверку перейдите в Архив задач: 1027. Снова D++