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)$ の座標を読み込んで、直線 $AB$ と $CD$ が直交する場合には YES、直交しない場合には NO と出力するプログラムを作成してください。ここで、「直線」とは線分のことではありません。以下の図を参考にして下さい。

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 以下であり、各値は小数点以下最大 5 桁までの数字を含む実数で与えられます。

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

Output

各データセットに対して、YES または NO を１行に出力して下さい。

Sample Input

1.0 1.0 2.0 2.0 0.0 0.0 1.0 -1.0
0.0 0.0 2.0 0.0 -1.0 2.0 2.0 2.0
10.0 6.0 3.4 5.2 6.8 9.5 4.3 2.1
2.5 3.5 2.5 4.5 -3.3 -2.3 6.8 -2.3

Output for the Sample Input

YES
NO
NO
YES

Solution in JAVA (judge verdict: Wrong Answer)



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
	public static void main(String[] args){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String tmp = null;
		
		int i = 0;
		int counta=0;
		int max = 0;
		int min = Integer.MAX_VALUE;
		int tmpp = Integer.MAX_VALUE;
		
		ArrayList<Integer> ast1 = new ArrayList<Integer>();
		ArrayList<Integer> ast2 = new ArrayList<Integer>();
		
		
		String[] sprite;
		
		
		double tmp1,tmp2;
		double[] tmper = new double[8];
		boolean flag;
		
		double tmpkata=0,tmpx,tmpy;
		double tmpkata2=0,tmpx2,tmpy2;
		int uuuuu;
		int ban =0;
		
		while(true){
			
			flag = true;
			uuuuu = 0;
			
			try {
				tmp = br.readLine();
			} catch (IOException e) {
				// TODO 自動生成された catch ブロック
				e.printStackTrace();
			}
			
			
			if(tmp == null){
				break;
			}
			if(tmp.equals("")){
				break;
			}
			
			sprite = tmp.split(" ");
			for(i=0;i<8;i++){
				tmper[i] = Double.parseDouble(sprite[i]);
			}
			
			tmpy = tmper[1] - tmper[3];
			tmpx = tmper[0] - tmper[2];
			
			tmpkata = tmpy/tmpx;
			tmpkata = tmpkata*-1d;
			
			tmpy2 = tmper[5] - tmper[7];
			tmpx2 = tmper[4] - tmper[6];
			
			tmpkata2 = tmpy2/tmpx2;
			
			if(tmpkata != tmpkata2){
				flag = false;
			}
			
			if(tmpy == 0d){
				if(tmpx2 == 0d){
					flag = true;
				}else{
					flag = false;
				}
			}else if(tmpx == 0d){
				if(tmpy2 == 0d){
					flag = true;
				}else{
					flag = false;
				}
			}
					
			if(flag){
				System.out.println("YES");
			}else{
				System.out.println("NO");
			}
			
		}
		
	}
}