题意 我的孩子的学校最近清理了一块很大的空地,打算将其改造成游乐区。空地的形状是多边形。方决定通过建造一道笔直的篱笆将空地分割成两个区域,大孩子和小孩子各用一个区域。篱笆将会在多形的两个非相邻顶点之间建造,根据空地的形状,所有可能的篱笆都会完全且严格地位于空地内。 自然而然,较小的那个区域会留给小孩子。那么你能帮助学校确定不同篱笆位置下较小游乐区的面积吗?
输入 第一行包含2个数字N,表示凸多边形的点数,Q表示直线围栏的可能位置数接下来的N行每行包含2个整数。第i行包含整数xi和yi,表示第i个点的坐标。点是顺时针顺序给出的。 接下来的Q行每行包含2个整数a和b,表示要绘制一条连接a和b的直线。
输出 输出 Q 行,每行对应一个查询。对于每个查询,输出相应查询下较小区域的面积,并保留一位小数即使答案是整数,也要保留一位小数,例如如果答案是 1,则输出 1.0。
数据范围 4 <= N <= 50000 1 <= Q <= 50000 -20,000,000 <= x,y <= 20,000,000 0 <= a < b-1 b < N
样例输入 4 2 0 0 0 1 1 2 1 0 1 3 0 2
样例输出 0.5 0.5
样例解释 多边形由点(0,0) (0,1) (1,2) (1,0)给出在第一个查询中,我们连接点(0,1)和(1,0),这导致了两个区域(0,0) (0,) (1,0)和(0,1) (1,2) (1,0)。第一个三角形的面积为0.5,三角形的面积为1。这两个面积的最小值为0.5。 在第二个查询中,我们连接点(0,0)和(,2),这导致了两个区域(0,0) (0,1) (1,2)和(0,0) (1,) (1,0)。第一个三角形的面积为0.5,第二个三角形的面积为1。这两个面积的最小值为0.5。