10167 - Birthday Cake

来源:互联网 发布:做衣服的软件 编辑:程序博客网 时间:2024/05/16 19:24
描述:我是完全把圆边缘的点都算出来,放到一个数组里,然后查询就可以了#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int num[1010][2],s[100010][2];int main(){    //freopen("a.txt","r",stdin);    int n,i,j;    for(i=500; i<1000; i++)    {        num[i][1]=-sqrt(250000-(i-500)*(i-500));        num[i][0]=num[1000-i][0]=i-500;        num[1000-i][1]=-num[i][1];    }    while(scanf("%d",&n)!=EOF)    {        if(!n) break;        memset(s,0,sizeof(s));        for( i=0; i<2*n; ++i)            scanf("%d%d",&s[i][0],&s[i][1]);        int up,down;        for(j=0; j<1000; j++)        {            up=down=i=0;            while(i<2*n)            {                if(num[j][0]*s[i][0]+num[j][1]*s[i][1]==0)break;                else if(num[j][0]*s[i][0]+num[j][1]*s[i][1]>0) up++;                else down++;                i++;            }            if(i==2*n&&up==down)            {                printf("%d %d\n",num[j][0],num[j][1]);                break;            }        }    }    return 0;}