#define PROBLEM "https://judge.yosupo.jp/problem/aplusb"
#include"../../geometry/all.hpp"#include<algorithm>
#include<cassert>
#include<cmath>
#include<cstdint>
#include"../../utilities/fast_io.hpp"
#include<vector>namespace{boolclose(longdoublea,longdoubleb){returnstd::fabs(a-b)<=1e-10L;}voidtest_basic(){usingnamespacem1une::geometry;usingP=Point<longlong>;Pa(0,0);Pb(3,0);Pc(1,2);assert(cross(a,b,c)==6);assert(orientation(a,b,c)==1);assert(orientation(a,c,b)==-1);assert(collinear(a,P(1,0),b));Pdivision_start(0,2);Pdivision_end(10,12);Point<longdouble>internal=internal_division_point(division_start,division_end,2,3);assert(close(internal.x,4));assert(close(internal.y,6));Point<longdouble>external_after=external_division_point(division_start,division_end,2,1);assert(close(external_after.x,20));assert(close(external_after.y,22));Point<longdouble>external_before=external_division_point(division_start,division_end,1,2);assert(close(external_before.x,-10));assert(close(external_before.y,-8));Segment<longlong>first;first.a=P(0,0);first.b=P(4,4);Segment<longlong>second;second.a=P(0,4);second.b=P(4,0);assert(intersects(first,second));assert(close(distance(first,second),0));Line<longlong>horizontal;horizontal.a=P(0,0);horizontal.b=P(4,0);[[maybe_unused]]Point<longdouble>projected=projection(horizontal,P(2,3));assert(close(projected.x,2));assert(close(projected.y,0));Line<longlong>diagonal1;diagonal1.a=P(0,0);diagonal1.b=P(2,2);Line<longlong>diagonal2;diagonal2.a=P(0,2);diagonal2.b=P(2,0);constLinearIntersectioncrossing=linear_intersection(diagonal1,diagonal2);assert(crossing.kind==LinearIntersectionKind::Point);assert(close(crossing.first.x,1));assert(close(crossing.first.y,1));std::vector<P>square;square.emplace_back(0,0);square.emplace_back(2,0);square.emplace_back(2,2);square.emplace_back(0,2);assert(polygon_area2(square)==8);assert(point_in_polygon(square,P(1,1))==PointInPolygon::Inside);assert(point_in_polygon(square,P(0,1))==PointInPolygon::Boundary);assert(point_in_polygon(square,P(3,1))==PointInPolygon::Outside);assert(convex_diameter2(square)==8);Circle<longdouble>circle;circle.center=Point<longdouble>(0,0);circle.radius=2;Line<longdouble>line;line.a=Point<longdouble>(-3,0);line.b=Point<longdouble>(3,0);autointersections=circle_boundary_intersection(circle,line);assert(intersections.contact_count==2);assert(close(intersections.contacts[0].point.x,-2));assert(close(intersections.contacts[1].point.x,2));Circle<longdouble>other;other.center=Point<longdouble>(3,0);other.radius=2;assert(circle_relation(circle,other)==CircleRelation::Intersecting);autocircle_points=circle_boundary_intersection(circle,other);assert(circle_points.contact_count()==2);for(intindex=0;index<circle_points.contact_count();++index){constauto&point=circle_points.contacts[index].point;assert(close(distance(point,circle.center),circle.radius));assert(close(distance(point,other.center),other.radius));}std::vector<P>collinear_points;collinear_points.emplace_back(2,0);collinear_points.emplace_back(0,0);collinear_points.emplace_back(1,0);assert(convex_hull(collinear_points).size()==2);assert(convex_hull(collinear_points,true)==std::vector<P>({P(0,0),P(1,0),P(2,0)}));}voidtest_randomized_hulls(){usingnamespacem1une::geometry;usingP=Point<longlong>;std::uint64_tstate=41;autorandom=[&state](){state^=state<<7;state^=state>>9;returnstate;};for(inttrial=0;trial<3000;trial++){intn=int(random()%30);std::vector<P>points;for(inti=0;i<n;i++){points.emplace_back(static_cast<longlong>(random()%31)-15,static_cast<longlong>(random()%31)-15);}std::vector<P>hull=convex_hull(points);if(hull.size()>=3){assert(polygon_area2(hull)>0);for(std::size_ti=0;i<hull.size();i++){assert(orientation(hull[i],hull[(i+1)%hull.size()],hull[(i+2)%hull.size()])>0);}autoexpected_diameter=wide_type<longlong>(0);for(constP&a:hull){for(constP&b:hull){expected_diameter=std::max(expected_diameter,distance2(a,b));}}assert(convex_diameter2(hull)==expected_diameter);}for([[maybe_unused]]constP&point:points){if(hull.size()>=3){assert(point_in_polygon(hull,point)!=PointInPolygon::Outside);}elseif(hull.size()==2){Segment<longlong>segment;segment.a=hull[0];segment.b=hull[1];assert(on_segment(segment,point));}elseif(hull.size()==1){assert(point==hull[0]);}}}}}// namespaceintmain(){m1une::utilities::FastInputfast_input;m1une::utilities::FastOutputfast_output;test_basic();test_randomized_hulls();longlonga,b;fast_input>>a>>b;fast_output<<a+b<<'\n';}
Traceback(mostrecentcalllast):File"/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py",line71,in_render_source_code_statbundled_code=language.bundle(stat.path,basedir=basedir,options={'include_paths':[basedir]}).decode()^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus.py",line187,inbundlebundler.update(path)File"/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line401,inupdateself.update(self._resolve(pathlib.Path(included),included_from=path))File"/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line401,inupdateself.update(self._resolve(pathlib.Path(included),included_from=path))File"/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line400,inupdateraiseBundleErrorAt(path,i+1,"unable to process #include in #if / #ifdef / #ifndef other than include guards")onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt:geometry/lattice_point_count.hpp:line28:unabletoprocess#includein#if/#ifdef/#ifndefotherthanincludeguards