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 Ruby (judge verdict: Wrong Answer)

#!/usr/local/bin/ruby
def heron(a,b,c)
t = Math::sqrt((a+b+c)*(b+c-a)*(a-b+c)*(a+b-c)/16)
t
end

a = Array.new
while(line = gets)
 a << line.split(",").map(&:to_f)
end
a.each do |xa,ya,xb,yb,xc,yc,xd,yd|
 ab = Math::sqrt( (xb-xa)**2 + (yb-ya)**2 )
 ac = Math::sqrt( (xc-xa)**2 + (yc-ya)**2 )
 ad = Math::sqrt( (xd-xa)**2 + (yd-ya)**2 )
 bc = Math::sqrt( (xc-xb)**2 + (yc-yb)**2 )
 bd = Math::sqrt( (xd-xb)**2 + (yd-yb)**2 )
 cd = Math::sqrt( (xd-xc)**2 + (yd-yc)**2 )
 s1 = heron(ab,ac,bc) + heron(ac,cd,ad)
 s2 = heron(ab,bd,ad) + heron(bc,cd,bd)
 if (s1 == s2)
  puts "YES"
 else
  puts "NO"
 end
end