题意:找出一条直线平分点
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int x[100],y[100]; int main() { int n,da,xi,flag,a,b; while(scanf("%d",&n) && n) { flag = 0 ; for(int i = 0 ; i <2*n ; i++) { scanf("%d%d",&x[i],&y[i]); if(x[i]*x[i]+y[i]*y[i] > 10000) { flag = 1; break; } } if(flag) break; for(int A = -500 ; A <= 500 ; A++) { for(int B = -500 ; B <= 500 ; B++) { flag = 0 ; da = xi = 0 ; for(int i = 0 ; i <2*n ; i++) // 在直线上的点是不被我们考虑的 if(A*x[i] + B*y[i] > 0) da++; else if(A*x[i] + B*y[i] < 0) xi++; if(da == n && xi == n) { a = A; b = B; flag = 1 ; break; } } if(flag) break; } printf("%d %d\n",a,b); } return 0 ; }