fork download
  1. //Lib
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cmath>
  6. #include<ctime>
  7.  
  8. #include<iostream>
  9. #include<algorithm>
  10. #include<vector>
  11. #include<string>
  12. #include<queue>
  13. #include<stack>
  14. #include<set>
  15. #include<map>
  16. using namespace std;
  17. //Macro
  18. #define rep(i,a,b) for(int i=a,tt=b;i<=tt;++i)
  19. #define drep(i,a,b) for(int i=a,tt=b;i>=tt;--i)
  20. #define erep(i,e,x) for(int i=x;i;i=e[i].next)
  21. #define irep(i,x) for(__typeof(x.begin()) i=x.begin();i!=x.end();i++)
  22. #define read() (strtol(ipos,&ipos,10))
  23. #define sqr(x) ((x)*(x))
  24. #define pb push_back
  25. #define PS system("pause");
  26. typedef long long ll;
  27. typedef pair<int,int> pii;
  28. const int oo=~0U>>1;
  29. const double inf=1e100;
  30. const double eps=1e-6;
  31. string name="", in=".in", out=".out";
  32. //Var
  33. struct P
  34. {
  35. double x,y;
  36. P(){}
  37. friend P operator+(const P &a,const P &b)
  38. {
  39. P c;c.x=a.x+b.x;c.y=a.y+b.y;
  40. return c;
  41. }
  42. friend P operator/(const P &a,const double &b)
  43. {
  44. P c=a;c.x/=b;c.y/=b;
  45. return c;
  46. }
  47. }o,p[100008];
  48. int n;
  49. double r;
  50. double Dis(P &x,P &y){return sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));}
  51. void Set(P &x,P &y,P &z)
  52. {
  53. double a1,b1,c1,a2,b2,c2;
  54. a1=2*(x.x-y.x),b1=2*(x.y-y.y),c1=sqr(x.x)-sqr(y.x)+sqr(x.y)-sqr(y.y);
  55. a2=2*(x.x-z.x),b2=2*(x.y-z.y),c2=sqr(x.x)-sqr(z.x)+sqr(x.y)-sqr(z.y);
  56. o.x=(c1*b2-c2*b1)/(a1*b2-a2*b1);o.y=(c1*a2-c2*a1)/(b1*a2-b2*a1);
  57. r=Dis(o,x);
  58. }
  59. void Work()
  60. {
  61. scanf("%d",&n);
  62. rep(i,1,n)scanf("%lf%lf",&p[i].x,&p[i].y);
  63. random_shuffle(p+1,p+1+n);
  64. o=p[1];r=0;
  65. rep(i,2,n)if(Dis(o,p[i])>r)
  66. {
  67. o=(p[i]+p[1])/2;
  68. r=Dis(o,p[i]);
  69. rep(j,1,i-1)if(Dis(o,p[j])>r)
  70. {
  71. o=(p[i]+p[j])/2;
  72. r=Dis(o,p[i]);
  73. rep(k,1,j-1)
  74. if(Dis(o,p[k])>r)
  75. Set(p[i],p[j],p[k]);
  76. }
  77. }
  78. printf("%.10lf\n%.10lf %.10lf\n",r,o.x,o.y);
  79. }
  80. int main()
  81. {
  82. // freopen((name+in).c_str(),"r",stdin);
  83. // freopen((name+out).c_str(),"w",stdout);
  84. // Init();
  85. Work();
  86. return 0;
  87. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty