⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2825425_ce.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
#include <stdio.h>

double R;
int n;
struct point
{
	double x, y;
};

point pt[1001], c;
int no;

double dis(point a,point b)
{
	return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}

int cross(point a,point b,point c)
{
	return (int)((c.x-b.x)*(a.y-b.y)-(a.x-b.x)*(c.y-b.y));
}

int max(int a,int b)
{
	return a<b?b:a;
}

int main()
{
	int i, j, tmp;
	int ans, l, r, mid;
	point t;

	while(scanf("%lf%lf%lf",&c.x,&c.y,&R)==3&&R>0)
	{
		no = 0;ans = -1;
		scanf("%d",&n);
		while(n--)
		{
			scanf("%lf%lf",&t.x,&t.y);
			if(dis(t,c)-R*R<=0)
				pt[no++] = t;
		}
		for(i = 0; i < no; i++)
		{
			mid = l = r = 0;
			for(j = 0; j < no; j++)
			{
				tmp = cross(pt[i],c,pt[j]);
				if(tmp==0)
					mid++;
				else
					if(tmp>0)
						l++;
					else
						r++;
			}
			tmp = max(l,r)+mid;
			if(tmp>ans)
				ans = tmp;
		}
		printf("%d\n",ans);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -