poj2398

来源:互联网 发布:一次性筷子知乎 编辑:程序博客网 时间:2024/06/06 00:16

Source Code

Problem: 2398 User: PraesidioMemory: 596K Time: 16MSLanguage: G++ Result: Accepted
  • Source Code

#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const double eps=1e-8;typedef pair<int,int> pii;struct point{double x,y;point() {} point(double _x,double _y) : x(_x) ,y(_y) {}};double operator * (const point& p1,const point& p2) {return p1.x*p2.y-p1.y*p2.x;}//---------------------int n,m,x1,y1,x2,y2;int x,y;point a[1005];vector <pii> v;int ans[1005];void init(){int u,l;v.clear();for (int i=0;i<n;i++) {scanf("%d%d",&u,&l);v.push_back(make_pair(u,l));} v.push_back(make_pair(x2,x2));sort(v.begin(),v.end());for (int i=0;i<n;i++) {a[i]=point(v[i].first-v[i].second,y1-y2);}}int main(){while (~scanf("%d",&n)&&n) {scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2);init();memset(ans,0,sizeof(ans));a[n]=point(0,y1-y2);for (int j=0;j<m;j++) {scanf("%d%d",&x,&y);for (int i=0;i<=n;i++) {point tmp=point(x-v[i].second,y-y2);if (a[i]*tmp>=0) {ans[i]++;break;}}}printf("Box\n");for (int i=1;i<=m;i++) {int ret=0;for (int j=0;j<=n;j++) {if (ans[j]==i) ret++;}if (ret) printf("%d: %d\n",i,ret);}}return 0;}


0 0
原创粉丝点击