题目大意:
一个圆饼,上面有2N个樱桃,切一刀,使两块上面都有相等的樱桃。
分析:
由于圆饼半径只有100,所以枚举A,B,-100到100.对于每一种A,B,看看直线两边点数是不是相同,注意题目中很多点不在饼上面。
code:
#include <stdio.h> struct node { int x, y; }point[105]; void solve(int n) { int A, B, v, l, r, i; for(A=-100; A <=100; A++) for(B=-100; B <=100; B++) { l = r = 0; for(i=0; i<n; i++) { v = A*point[i].x + B*point[i].y; if(v>0) l++; else if(v<0) r++; else break; if(l==r&&r==n/2) { printf("%d %d\n",A,B); return ; } } } } int main() { int x, y, i, t, n; while(scanf("%d",&t),t) { n = 0; t <<=1; while(t--) { scanf("%d%d",&x,&y); if(x>=-100&&x<=100&&y>=-100&&y<=100) { point[n].x = x; point[n++].y = y; } } solve(n); } return 0; }