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