[Poj2398]Toy Storage

来源:互联网 发布:wacom没有压感 mac 编辑:程序博客网 时间:2024/05/01 22:25
#include<iostream>#include<algorithm>#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[5001],num[5001];line l[5000];bool cmp(line a,line b){return a.x.x<b.x.x;}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));memset(num,0,sizeof(num));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));}sort(l+1,l+n+1,cmp);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++)num[ans[i]]++;printf("Box\n");for(int i=1;i<=n;i++)if(num[i])printf("%d: %d\n",i,num[i]);}return 0;}

0 0