/** 平面几何(with. std::complex)
* 2023-09-04: https://qoj.ac/submission/164445
**/usingPoint=std::complex<longdouble>;#define x real
#define y imag
longdoubledot(constPoint&a,constPoint&b){return(std::conj(a)*b).x();}longdoublecross(constPoint&a,constPoint&b){return(std::conj(a)*b).y();}longdoublelength(constPoint&a){returnstd::sqrt(dot(a,a));}longdoubledist(constPoint&a,constPoint&b){returnlength(a-b);}longdoubleget(constPoint&a,constPoint&b,constPoint&c,constPoint&d){autoe=a+(b-a)*cross(c-a,d-a)/cross(b-a,d-c);returndist(d,e);}
#line 1 "src/jiangly/math/09B-Flat-Geometry.hpp"
/** 平面几何(with. std::complex)
* 2023-09-04: https://qoj.ac/submission/164445
**/usingPoint=std::complex<longdouble>;#define x real
#define y imag
longdoubledot(constPoint&a,constPoint&b){return(std::conj(a)*b).x();}longdoublecross(constPoint&a,constPoint&b){return(std::conj(a)*b).y();}longdoublelength(constPoint&a){returnstd::sqrt(dot(a,a));}longdoubledist(constPoint&a,constPoint&b){returnlength(a-b);}longdoubleget(constPoint&a,constPoint&b,constPoint&c,constPoint&d){autoe=a+(b-a)*cross(c-a,d-a)/cross(b-a,d-c);returndist(d,e);}