Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

凸？

平面上の異なる 4 点　$A (x_a, y_a)$, $B (x_b, y_b)$, $C (x_c, y_c)$, $D(x_d, y_d)$ の座標を読み込んで、それら 4 点を頂点とした四角形 $ABCD$ に凹みがなければ YES、凹みがあれば NO と出力するプログラムを作成してください。

凹みのある四角形とは図 1 のような四角形です。

Input

複数のデータセットが与えられます。各データセットの形式は以下のとおりです。

$x_a$,$y_a$,$x_b$,$y_b$,$x_c$,$y_c$,$x_d$,$y_d$

$x_a$, $y_a$, $x_b$, $y_b$, $x_c$, $y_c$, $x_d$, $y_d$ はそれぞれ -100 以上 100 以下であり、実数で与えられます。

1 直線上に 3 つ以上点が並ぶことはないものとします。また、入力順に点を結んでいけば、四角形になる順番に点の座標が入力されるものとします。（つまり、図 2 のような形になる順番で点が与えられることはありません。)

データセットの数は 100 を超えません。

Output

各データセットごとに、YES または NO を１行に出力します。

Sample Input

0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0
0.0,0.0,3.0,0.0,1.0,1.0,1.0,3.0

Output for the Sample Input

YES
NO

Solution in Python (judge verdict: Wrong Answer)


import sys


class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y


class Quadrangle:
    def __init__(self, p1, p2, p3, p4):
        self.p1 = p1
        self.p2 = p2
        self.p3 = p3
        self.p4 = p4

    def isconvex(self):
        d1 = direction_of_rotation(self.p1, self.p2, self.p3)
        d2 = direction_of_rotation(self.p2, self.p3, self.p4)
        d3 = direction_of_rotation(self.p3, self.p4, self.p1)
        d4 = direction_of_rotation(self.p4, self.p1, self.p2)
        if d1 == d2 == d3 == d4:
            return 'YES'
        else:
            return 'NO'


def direction_of_rotation(p1, p2, p3):
    d = p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y)
    if d < 0:
        direction = 'right'
    else:
        direction = 'left'
    return direction


for line in sys.stdin:
    a = map(float, line.split(','))
    p1 = Point(a[0], a[1])
    p2 = Point(a[2], a[2])
    p3 = Point(a[4], a[5])
    p4 = Point(a[6], a[7])
    q = Quadrangle(p1, p2, p3, p4)
    print q.isconvex()