一个圆内给定2N个点,求一条直线Ax+By=0,把点分割成相等的两部分。
直接枚举A和B就行,数据范围不大。
#include <stdio.h>
#define N 105
int x[N], y[N];
int main()
{
int n;
while(scanf("%d", &n), n)
{
for(int i = 0; i < 2 * n; i++)
{
scanf("%d %d", &x[i], &y[i]);
}
for(int i = -500; i < 501; i++)
{
bool mk = 0;
for(int j = -500; j < 501; j++)
{
int count1, count2;
count1 = count2 = 0;
for(int k = 0; k < 2 * n; k++)
{
int t = x[k] * i + y[k] * j;
if(t > 0) count1++;
else if(t < 0) count2++;
}
if(count1 == count2 && count1 == n)
{
mk = 1;
printf("%d %d\n", i, j);
break;
}
}
if(mk) break;
}
}
return 0;
}