40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
export {};
|
|
const input = require("fs").readFileSync(0).toString().trim().split("\n");
|
|
const [x1, y1, x2, y2]: number[] = input[0].split(" ").map(Number);
|
|
const [x3, y3, x4, y4]: number[] = input[1].split(" ").map(Number);
|
|
|
|
const compare = (A: number[], B: number[]): boolean => {
|
|
if(A[0] < B[0]) return true;
|
|
else if(A[0] === B[0]) return A[1] <= B[1];
|
|
|
|
return false;
|
|
}
|
|
|
|
const crossProduct = (A: number[], B: number[], C: number[]): number => {
|
|
const op: number = (B[0] - A[0]) * (C[1] - A[1]) - (B[1] - A[1]) * (C[0] - A[0]);
|
|
if(op > 0) return 1;
|
|
else if(op < 0) return -1;
|
|
return 0;
|
|
}
|
|
|
|
|
|
let A: number[] = [x1, y1], B: number[] = [x2, y2];
|
|
if(!compare(A, B)) [A, B] = [B, A];
|
|
|
|
let C: number[] = [x3, y3], D: number[] = [x4, y4];
|
|
if(!compare(C, D)) [C, D] = [D, C];
|
|
|
|
let ans: number = 0;
|
|
|
|
const crossABCD: number = crossProduct(A, B, C) * crossProduct(A, B, D);
|
|
const crossCDAB: number = crossProduct(C, D, A) * crossProduct(C, D, B);
|
|
|
|
if((crossABCD === 0 && crossCDAB === 0)) {
|
|
if(compare(A,D) && compare(C,B)) ans = 1;
|
|
}
|
|
|
|
else if(crossABCD <= 0 && crossCDAB <= 0) {
|
|
ans = 1;
|
|
}
|
|
|
|
console.log(ans); |