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

import java.util.Scanner;
public class Main {
    public static void main (String[] args) {
	Scanner scan = new Scanner(System.in);
	double[] data = new double[8];
	String[] input;
	while (scan.hasNext()) {
	    input = scan.nextLine().split(",");
	    for (int i = 0; i < 8; i++) {
		data[i] = Double.parseDouble(input[i]);
	    }
	    if (isConvex(data)) {
		System.out.println("NO");
	    } else {
		System.out.println("YES");
	    }
	}
    }
    static boolean isConvex (double[] data) {
	double xa = data[0];
	double ya = data[1];
	double xb = data[2];
	double yb = data[3];
	double xc = data[4];
	double yc = data[5];
	double xd = data[6];
	double yd = data[7];
	double s1 = ((xd - xb) * (ya - yb) - (yd - yb) * (xa - xb)) / 2;
	double s2 = ((xd - xb) * (yc - yb) - (yd - yb) * (xc - xb)) / 2;
	double xm = xa + (xc - xa) * s1 / (s1 + s2);
	double ym = ya + (yc - ya) * s1 / (s1 + s2);
	double ac = len(xa, ya, xc, yc);
	double am = len(xa, ya, xm, ym);
	double bd = len(xb, yb, xd, yd);
	double bm = len(xb, yb, xm, ym);
	if (am < ac && bm < bd){
	    return true;
	} else {
	    return false;
	}
    }
    static double len (double xa, double ya, double xb, double yb) {
	return (xa - xb) * (xa - xb) + (ya - yb) * (ya - yb);
    }
}