UVA-10167
题意:给出2N 个点,求AB为多少时,Ax+By=0 把点分成相等的两部分。
解题思路:暴力枚举,把点带入直线方程,大于0的是一边,小于0的是另外一边。
/*************************************************************************
> File Name: UVA-10167.cpp
> Author: Narsh
>
> Created Time: 2016年07月22日 星期五 15时14分27秒
************************************************************************/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int x[3000],y[3000],num,d,u,n;
int main() {
//freopen("xx.in","r",stdin);
while (scanf("%d",&n) && n) {
num = 0;
for (int i = 1; i <= n*2; i++) {
scanf("%d%d",&d,&u);
if (d*d + u*u <= 10000) {
num++;
x[num]=d;
y[num]=u;
}
}
bool flag = true;
for (int i = -500; flag && i <= 500; i++)
for (int j = - 500; flag && j <= 500; j++) {
d=u=0;
for (int l = 1; l <= num; l++)
if (x[l]*i+y[l]*j > 0) d++;
else if (x[l]*i+y[l]*j < 0) u++;
else break;
if (u == d && u+d == num) {
printf("%d %d\n",i,j);
flag=false;
}
}
}
}