Language: C++

#pragma region

#include "bits/stdc++.h"
using namespace std;
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
#define _irep3(i, begin, end) for (register int i = (end)-1, i##_begin = (begin); i >= i##_begin; i--)
#define _rep2(i, n) _rep3(i, 0, n)
#define _irep2(i, n) _irep3(i, 0, n)
#define _overload3(_1, _2, _3, name, ...) name
#define rep(...) _overload3(__VA_ARGS__, _rep3, _rep2, )(__VA_ARGS__)
#define irep(...) _overload3(__VA_ARGS__, _irep3, _irep2, )(__VA_ARGS__)
#define out(x) cout << (x) << '\n';
#define debug(x) cerr << #x << " = " << (x) << " (line: " << __LINE__ << ") " << endl;
typedef long long ll;

template <typename T>
istream &operator>>(istream &is, vector<T> &vec) {
  for (auto &v : vec) is >> v;
  return is;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
  os << "vec[ ";
  rep(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i];
  os << " ]";
  return os;
}

#pragma endregion

#define MOD 1000000007
#define INF 2147483647

using ld = double;
using P = complex<ld>;

template <class iter>
std::pair<P, ld> min_ball(iter left, iter right, int seed = 1333) {
  const int n = right - left;

  assert(n >= 1);
  if (n == 1) {
    return {*left, ld(0)};
  }

  std::mt19937 mt(seed);
  std::shuffle(left, right, mt);
  // std::random_shuffle(left, right); // simple but deprecated

  iter ps = left;
  using circle = std::pair<P, ld>;

  auto make_circle_3 = [](const P &a, const P &b, const P &c) -> circle {
    ld A = std::norm(b - c), B = std::norm(c - a), C = std::norm(a - b),
       S = cross(b - a, c - a);
    P p = (A * (B + C - A) * a + B * (C + A - B) * b + C * (A + B - C) * c) / (4 * S * S);
    ld r2 = std::norm(p - a);
    return {p, r2};
  };

  auto make_circle_2 = [](const P &a, const P &b) -> circle {
    P c = (a + b) / (ld)2;
    ld r2 = std::norm(a - c);
    return {c, r2};
  };

  auto in_circle = [](const P &a, const circle &c) -> bool {
    return std::norm(a - c.first) <= c.second + eps;
  };

  circle c = make_circle_2(ps[0], ps[1]);

  // MiniDisc
  for (int i = 2; i < n; ++i) {
    if (!in_circle(ps[i], c)) {
      // MiniDiscWithPoint
      c = make_circle_2(ps[0], ps[i]);
      for (int j = 1; j < i; ++j) {
        if (!in_circle(ps[j], c)) {
          // MiniDiscWith2Points
          c = make_circle_2(ps[i], ps[j]);
          for (int k = 0; k < j; ++k) {
            if (!in_circle(ps[k], c)) {
              c = make_circle_3(ps[i], ps[j], ps[k]);
            }
          }
        }
      }
    }
  }
  return c;
}

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(10);

  int N;
  cin >> N;
  vector<double> x(N), y(N);
  rep(i, N) cin >> x[i] >> y[i];

  if (N == 2) {
    out(sqrt(pow(x[0] - x[1], 2) + pow(y[0] - y[1], 2)) / 2);
    return 0;
  }

  vector<P> point(N);
  rep(i, N) point[i] = P(x[i], y[i]);

  pair<P, ld> ans = min_ball(all(point));

  out(ans.second);
}


Compiler output:
a.cc: In function 'std::ostream& operator<<(std::ostream&, const std::vector<_Tp>&)':
a.cc:26:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   26 |   rep(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i];
      |       ^
a.cc:7:48: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:26:3: note: in expansion of macro 'rep'
   26 |   rep(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i];
      |   ^~~
a.cc:26:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   26 |   rep(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i];
      |       ^
a.cc:7:61: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                             ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:26:3: note: in expansion of macro 'rep'
   26 |   rep(i, vec.size()) i == 0 ? os << vec[i] : os << ", " << vec[i];
      |   ^~~
a.cc: In lambda function:
a.cc:57:12: error: there are no arguments to 'cross' that depend on a template parameter, so a declaration of 'cross' must be available [-fpermissive]
   57 |        S = cross(b - a, c - a);
      |            ^~~~~
a.cc:57:12: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
a.cc: In lambda function:
a.cc:70:49: error: 'eps' was not declared in this scope; did you mean 'ps'?
   70 |     return std::norm(a - c.first) <= c.second + eps;
      |                                                 ^~~
      |                                                 ps
a.cc: In function 'int main()':
a.cc:104:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  104 |   rep(i, N) cin >> x[i] >> y[i];
      |       ^
a.cc:7:48: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:104:3: note: in expansion of macro 'rep'
  104 |   rep(i, N) cin >> x[i] >> y[i];
      |   ^~~
a.cc:104:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  104 |   rep(i, N) cin >> x[i] >> y[i];
      |       ^
a.cc:7:61: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                             ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:104:3: note: in expansion of macro 'rep'
  104 |   rep(i, N) cin >> x[i] >> y[i];
      |   ^~~
a.cc:112:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  112 |   rep(i, N) point[i] = P(x[i], y[i]);
      |       ^
a.cc:7:48: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:112:3: note: in expansion of macro 'rep'
  112 |   rep(i, N) point[i] = P(x[i], y[i]);
      |   ^~~
a.cc:112:7: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  112 |   rep(i, N) point[i] = P(x[i], y[i]);
      |       ^
a.cc:7:61: note: in definition of macro '_rep3'
    7 | #define _rep3(i, begin, end) for (register int i = (begin), i##_end = (end); i < i##_end; i++)
      |                                                             ^
a.cc:11:43: note: in expansion of macro '_rep2'
   11 | #define _overload3(_1, _2, _3, name, ...) name
      |                                           ^~~~
a.cc:112:3: note: in expansion of macro 'rep'
  112 |   rep(i, N) point[i] = P(x[i], y[i]);
      |   ^~~
a.cc: In instantiation of 'std::pair<std::complex<double>, double> min_ball(iter, iter, int) [with iter = __gnu_cxx::__normal_iterator<std::complex<double>*, std::vector<std::complex<double> > >]':
a.cc:114:29:   required from here
  114 |   pair<P, ld> ans = min_ball(all(point));
      |                     ~~~~~~~~^~~~~~~~~~~~
a.cc:57:17: error: 'cross' was not declared in this scope
   57 |        S = cross(b - a, c - a);
      |            ~~~~~^~~~~~~~~~~~~~