#P2372. D++ Again
D++ Again
Description
The language D++, that was perfected by the participants of our March competition, continues improving. Its founders try to make the syntax as clear as it is possible in order to make the programming simpler in the future.
Of course, some minimal set of rules is to stay without changes. Your program is to check the observance of rules, concerning the arrangement of brackets and comments.
A text of a correct D++ program contains a symbol part, arithmetic expressions and comments. Comments may appear everywhere and may contain every symbol. A comment is always opened by a pair of symbols "(*" and is closed by a pair of symbols "*)". Each comment must be closed. An arithmetic expression in D++ is always opened by "(", is closed by ")" and may contain any of the following symbols: "=+-*/0123456789)(" and, surely, comments. No spaces in arithmetic expressions are allowed, though a carriage return may occur. You may run across embedded brackets in an arithmetic expression. In this case these brackets are to be balanced. It means that "((1)))" as well as "(23))((+)" are not correct arithmetic expressions. An arithmetic expression is correct if and only if brackets placed correctly. At last, all the rest of the program text (the result of rejection of all comments and arithmetic expressions from the initial text of the program) may contain every symbol excluding "(" and ")".
We would like to especially notice that the spaces are posiible anywhere in a text of a program except when apppeearing in arithmetic expressions.
Input
Some text is written in the standard input. There are not more than 10 000 symbols in the text. There may be Latin letters, digits, brackets, symbols of arithmetic operations and the symbols "end of line" and "carriage return".
Output
Your program should write "YES" to the output if the introduced text is a correct D++ program, and "NO" otherwise.
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
Source
Ural State University Internal Contest October'2000 Junior Session