#P2043. Area of Polygons

Area of Polygons

描述

Yoko 今天的数学作业是计算 xyxy 平面上多边形的面积。顶点都对齐到网格点(即它们有整数坐标)。

你的任务是帮助 Yoko,她既不擅长数学也不擅长计算机编程,完成她的作业。通过列出顶点的坐标来给出多边形。你的程序应该通过计算与多边形相交的单位正方形的数量来近似其面积。精确地,如果两个的交集具有非零面积,则单位正方形“与多边形相交”。在下面的图中,虚线水平和垂直线是网格线,实线是多边形的边。阴影单位正方形被认为是与多边形相交的。你的程序应该为这个多边形输出 5555(如你所见,阴影单位正方形的数量是 5555)。

输入

输入文件一个接一个地描述多边形,后面跟着一个只包含单个零的终止行。

通过一行包含一个整数 mm>=3>= 3),给出多边形的描述,该整数给出其顶点的数量。它后面跟着 mm 行,每行包含两个整数 xxyy,顶点的坐标。xxyy 之间用一个空格分隔。这些 mm 行中的第 ii 行给出第 ii 个顶点的坐标(i=1,...,mi = 1,...,m)。对于每个 i=1,...,m1i = 1,...,m-1,第 ii 个顶点和第 (i+1)(i+1)-th 顶点通过一条边连接。第 mm 个顶点和第一个顶点也通过一条边连接(即,曲线是闭合的)。边仅在顶点处相交。没有三条边共享一个单一的顶点(即,曲线是简单的)。多边形的数量不超过 100100。对于每个多边形,顶点的数量(mm)不超过 100100。所有坐标 xxyy 满足 2000<=x<=2000-2000 <= x <= 20002000<=y<=2000-2000 <= y <= 2000

输出

输出应该由与多边形数量一样多的行组成。第 kk 行输出应该打印一个整数,它是第 kk 个多边形的面积,以上述方式近似。不应打印其他任何字符,包括空白。

输入数据 1

4  
5 -3  
1 0  
1 7  
-7 -1  
3  
5 5  
18 5  
5 10  
3  
-5 -5  
-5 -10  
-18 -10  
5  
0 0  
20 2  
11 1  
21 2  
2 0  
0

输出数据 1

55  
41  
41  
23

来源

2003年日本,会津