[Poj2398]Toy Storage
2014-04-27 11:36
232 查看
#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 second using 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; }
相关文章推荐
- STL之vetor 排序
- python3 解析html
- 生活随笔:职业、领域、转型
- UML之构件图
- WinForm窗体之间传值
- 程序4-1 对每个命令行参数打印文件类型
- STL之vetor 排序
- 1288: 计算几何练习题——线段相交
- 隐藏tabelView多余的cell
- js实现页面跳转的几种方式
- mysql的test 库的相关特性
- 垃圾回收机制与变量周期,不成熟见解。
- Java4Android(第46~49集)eclipse工具及使用
- 用链表写的学生管理系统 成绩的录入与查询都已经是实现了
- C++ Primer笔记(十八)优化内存分配
- wpf图片定点缩放
- 浅谈C++多态性
- 8192EU无线网卡在ubuntu14.04下驱动编译错误解决
- itext in action英文版教程demo中关于Hsqldb的设置
- android添加自定义LOG函数。