[Poj2318]TOYS

来源:互联网 发布:js 数组中查找值 编辑:程序博客网 时间:2024/05/18 03:25
#include<iostream>#include<cstring>#include<cstdio>#define mk make_pair#define point pair<int,int>#define line pair<point,point> #define x first#define y secondusing namespace std;int n,m,x1,y1,x2,y2,ans[5000];line l[5000];point sub(point a,point b){return mk(a.x-b.x,a.y-b.y);}int cmul(point a,point b){return a.x*b.y-b.x*a.y;}int turn(point a,point b,point c){return cmul(sub(b,a),sub(c,a));}void search(point p){int L=1,r=n,mid,t=0;while(L<=r){mid=(L+r)>>1;if(turn(l[mid].x,l[mid].y,p)>=0){t=mid;L=mid+1;}else r=mid-1;}ans[t]++;}int main(){while(scanf("%d",&n)&&n){memset(ans,0,sizeof(ans));scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2);for(int i=1;i<=n;i++){int a,b;scanf("%d%d",&a,&b);l[i]=mk(mk(a,y1),mk(b,y2));}for(int i=1;i<=m;i++){int a,b;scanf("%d%d",&a,&b);search(mk(a,b));}for(int i=0;i<=n;i++)printf("%d: %d\n",i,ans[i]);printf("\n");}return 0;}

0 0