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: Accepted)

/**
 * 
 */
import java.util.*;
import java.util.regex.Pattern;
import java.io.*;
/**
 * @author afterCmidday
 *
 */
class Main {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		final double eps = 1e-100;
		Scanner scan = new Scanner(System.in);
		double[] x = new double[4], y = new double[4];
		while(scan.hasNext()){
			String str = scan.next();
			for(int i = 0;i < 4;i++){
				x[i] = Double.parseDouble(str.substring(0,str.indexOf(",")));
				str = str.substring(str.indexOf(",") + 1);
				if(str.indexOf(",") == -1){
					y[i] = Double.parseDouble(str.substring(0,str.length()));
					str = str.substring(str.indexOf(",") + 1);
				}else{
					y[i] = Double.parseDouble(str.substring(0,str.indexOf(",")));
					str = str.substring(str.indexOf(",") + 1);
				}
			}
			boolean b1 = true, b2 = true;
			for(int i = 0;i < 4;i++){
				double vax = x[(i + 1) % 4] - x[i], vay = y[(i + 1) % 4] - y[i];
				double vbx = x[(i + 3) % 4] - x[i], vby = y[(i + 3) % 4] - y[i];
				if(vax * vby - vay * vbx < 0){
					b1 = false;
				}else{
					b2 = false;
				}
			}
			if(b1 || b2){
				System.out.println("YES");
			}else{
				System.out.println("NO");
			}
			
		}
	}

}