UVA10167Birthday Cake

来源:互联网 发布:淘宝上传工具 编辑:程序博客网 时间:2024/06/04 00:32

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;                }            }    }}
0 0