简单的枚举-测试题目
#include <stdio.h>
#include <vector>
using namespace std;
struct pos
{
int i;
int j;
};
vector<struct pos> v;
void func(int n)
{
int a, b, i;
int count1, count2;
for(a=-100; a<=100; a++)
{
for(b=-100; b<=100; b++)
{
count1 = count2 = 0;
for(i=0; i<v.size(); i++)
{
if(a*v[i].i+b*v[i].j > 0)
count1++;
else if(a*v[i].i+b*v[i].j < 0)
count2++;
else
break;
if(count1>n || count2>n)
break;
}
if(count1 == count2 && count1 == n)
{
goto end;
}
}
}
end:
printf("%d %d\n", a, b);
}
int main(void)
{
int n;
struct pos p;
//freopen("input.dat", "r", stdin);
while(1)
{
scanf("%d", &n);
if(!n)
break;
v.clear();
for(int i=1; i<=2*n; i++)
{
scanf("%d %d", &(p.i), &(p.j));
if(p.i*p.i+p.j*p.j<=10000)
v.push_back(p);
}
func(n);
}
}