2026-03-02 20:34:17 +09:00

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);