#1042. A<B Problem

A<B Problem

No submission language available for this problem.

Background

Special for beginners, ^_^

Description

对计算机的算术运算有深刻的理解是写出可靠程序的关键,一些初学者往往很惊奇地了解到(用补码表示的)两个正数的和或者积可能为负。比如在大多数计算机(使用 32 位来表示数据类型 int)上计算 200∗300∗400∗500 会得出结果 −884901888

补码的算术运算满足很多整数运算的代数特性,因此,编译器可以很安全地把一个常量乘法转为一系列的移位和加法。例如利用乘法的结合律和交换律,计算一下的任意一个 C 表达式,都会得出 −884901888 的结果。

(500∗400)∗(300∗200)

((500∗400)∗300)∗200

((200∗500)∗300)∗400

400∗(200∗(300∗500))

虽然没有产生期望的结果,但是至少它是一致的!

算数溢出时造成程序错误和安全漏洞的一个常见根源。例如程序员和编译器不能用表达式 (x−y<0) 来代替 (x<y) ,因为前者可能会产生溢出。甚至也不能用表达式 (−y<−x) 来替代,因为在补码表示中负数和正数的范围是不对称的。

Format

Input

输入一行字符串长度不超过 30,一定是 (x<y)(x−y<0)(−y<−x) 三种形式之一,请判断给出的写法是否是安全的,如果是安全的请输出 YES,否则输出 NO

注意:在这里我们假设 xy 都是正数,即不会出现 5(x=5)−−5(x=−5) 这种数。

Output

如果输入格式为 (x<y) 则输出 YES ,否则输出 NO

Samples

( 5 < 10 )
YES
( 5 - 10 < 0 )
NO
( -5 < -10 )
NO

Limitation

1s, 1024KiB for each test case.