#include<stdio.h>
#include<string.h>
struct node
{
double x,y;
}up[5050],down[5050],t[5050];
double mult(struct node a,struct node b,struct node c)
{
return (a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x);
}
int main()
{
int n,m,i,j;
double x1,x2,y2,y1,a,b,t1,t2;
int ans[5050];
while(scanf("%d",&n),n!=0)
{
memset(ans,0,sizeof(ans));
scanf("%d%lf%lf%lf%lf",&m,&x1,&y1,&x2,&y2);
up[0].x=x1;
up[0].y=y1;
down[0].x=x1;
down[0].y=y2;
up[n+1].x=x2;
up[n+1].y=y1;
down[n+1].x=x2;
down[n+1].y=y2;
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&a,&b);
up[i].x=a;
up[i].y=y1;
down[i].x=b;
down[i].y=y2;
}
for(i=0;i<m;i++)
scanf("%lf%lf",&t[i].x,&t[i].y);
for(i=0;i<m;i++)
{
for(j=1;j<=n+1;j++)
{
t1=mult(up[j-1],down[j-1],t[i]);
t2=mult(up[j],down[j],t[i]);
if(t1*t2<=0)
{
ans[j-1]++;
break;
}
}
}
for(i=0;i<=n;i++)
printf("%d: %d\n",i,ans[i]);
printf("\n");
}
return 0;
}
poj 2318
最新推荐文章于 2019-08-11 15:16:25 发布