UVA 10167 Birthday Cake
题目大意:给出几个坐标点,要求Ax+By = 0(-100 <= A/B <= 100)能将坐标点对半分
解题思路:枚举全部情况,直到能够分开为止
#include <stdio.h>
#include <iostream>
using namespace std;
int n;
int point[110][2];
int num;
void pro() {
int p, q;
for(int i = -100; i <= 100; i++)
for(int j = -100; j <= 100; j++) {
p = 0;
q = 0;
for(int k = 0; k < num; k++) {
if(point[k][0] >= -500 && point[k][1] >= -500 && point [k][0] <= 500 && point[k][1] <= 500) {
if(point[k][0] * i + point[k][1] * j > 0)
p++;
else if(point[k][0] * i + point[k][1] * j < 0)
q++;
else
break;
if(q == p && q == num/2) {
printf("%d %d\n", i, j);
return;
}
}
}
}
}
int main() {
while(cin >> n && n) {
int x, y;
num = 0;
for(int i = 0; i < 2 * n; i++) {
cin >> point[num][0] >> point[num][1];
num++;
}
pro();
}
return 0;
}