poj 2318

来源:互联网 发布:扫描仪软件 编辑:程序博客网 时间:2024/05/19 17:27
#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;}

0 0
原创粉丝点击