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.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

public class Main {
    public static void main(String args[]){
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try{
            String line;
            while((line=br.readLine())!=null){  if(line.equals(""))break;
                String[] splited = line.split(",");
                double xa=Double.parseDouble(splited[0]),ya=Double.parseDouble(splited[1]);
                double xb=Double.parseDouble(splited[2]),yb=Double.parseDouble(splited[3]);
                double xc=Double.parseDouble(splited[4]),yc=Double.parseDouble(splited[5]);
                double xd=Double.parseDouble(splited[6]),yd=Double.parseDouble(splited[7]);
                gra=(yc-ya)/(xc-xa);y0=ya;x0=xa;
                boolean check1;
                check1=linemaker(xb,yb)*linemaker(xd,yd)<0;
      if(!check1){System.out.println("NO");continue;}
      gra=(yd-yb)/(xd-xb);y0=yb;x0=xb;
                boolean check2=linemaker(xa,ya)*linemaker(xc,yc)<0;
                if(check2)System.out.println("YES");else System.out.println("NO");
                
            }         
        }catch(Exception e){e.printStackTrace();}        
    }
    static double gra=0,y0=0,x0=0;
    static double linemaker(double x1, double y1){
        return y1-y0-(gra*(x1-x0));
    }
}