#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;#define maxn 200#define eps 1.0e-8struct Point{ int x, y;}s, point[maxn];double r;int n;bool operator < (const Point &a, const Point &b){ return atan2((double)a.x, (double)a.y) < atan2((double)b.x, (double)b.y);}void input(){ int cnt = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d%d", &point[cnt].x, &point[cnt].y); point[cnt].x -= s.x; point[cnt].y -= s.y; if (r * r > point[cnt].x * point[cnt].x + point[cnt].y * point[cnt].y - eps) cnt++; } n = cnt;}double xmulti(Point a, Point b){ return a.x * b.y - a.y * b.x;}bool within(Point a, Point b){ return xmulti(b, a) > -eps;}int work(){ int r = 0; int ans = 0; for (int i = 0; i < n; i++) { while (r - i < n && within(point[i], point[r % n])) r++; ans = max(ans, r - i); } return ans;}int main(){ while (scanf("%d%d%lf", &s.x, &s.y, &r), r >= 0) { input(); sort(point, point + n); printf("%dn", work()); } return 0;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)