Language: C++

#include <bits/stdc++.h>
using namespace std;

#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)

using ll = long long;
ll INF = LLONG_MAX;

using ld = __float128;
using vld = vector<ld>;
using pii = pair<ll, ll>;

vector<pii> points;

ld dist(ld x1, ld y1, ld x2, ld y2) {
    return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
}
int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    ll N; cin >> N;
    
    points = vector<pii> (N);
    F0R(i, N) {
        ld a, b; cin >> a >> b;
        points[i] = pii {a, b};
    }

    ld best = INF;
    F0R(i, N) {
        FOR(j, i+1, N) {
            FOR(k, j+1, N) {
                pii a = points[i];
                pii b = points[j];
                pii c = points[k];
                ll ax = a.first;
                ll ay = a.second;
                ll bx = b.first;
                ll by = b.second;
                ll cx = c.first;
                ll cy = c.second;
                ll d = 2 * (ax * (by - cy) + bx * (cy - ay) + cx * (ay - by));
                
                ld xc = ((ax * ax + ay * ay) * (by - cy) + (bx * bx + by * by) * (cy - ay) + (cx * cx + cy * cy) * (ay - by)) / (ld) d;
                ld yc = ((ax * ax + ay * ay) * (cx - bx) + (bx * bx + by * by) * (ax - cx) + (cx * cx + cy * cy) * (bx - ax)) / (ld) d;
                ld radius = dist(ax, ay, xc, yc);

                bool fail = false;
                for (pii point : points) {
                    ld xp = point.first;
                    ld yp = point.second;

                    if (dist(xp, yp, xc, yc) > radius + 1e-6) fail = true;
                }
                if (!fail) {
                    best = min(best, radius);
                }
            }
        }
    }
    if (N == 2) {
        ld x1 = points[0].first;
        ld x2 = points[1].first;
        ld y1 = points[0].second;
        ld y2 = points[1].second;
        cout << setprecision(20) << dist(x1, y1, x2, y2) / (ld) 2.0 << endl;
    } else {
        cout << setprecision(20) << best << endl;
    }
    
}

Compiler output:
a.cc: In function 'ld dist(ld, ld, ld, ld)':
a.cc:19:20: error: call of overloaded 'pow(ld, int)' is ambiguous
   19 |     return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
      |                 ~~~^~~~~~~~~~~~
In file included from /usr/include/features.h:523,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/c++config.h:683,
                 from /usr/include/c++/14/cassert:43,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:33,
                 from a.cc:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:173:1: note: candidate: 'double pow(double, double)'
  173 | __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
      | ^~~~~~~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:114:
/usr/include/c++/14/cmath:380:3: note: candidate: 'constexpr long double std::pow(long double, long double)'
  380 |   pow(long double __x, long double __y)
      |   ^~~
/usr/include/c++/14/cmath:376:3: note: candidate: 'constexpr float std::pow(float, float)'
  376 |   pow(float __x, float __y)
      |   ^~~
a.cc:19:38: error: call of overloaded 'pow(ld, int)' is ambiguous
   19 |     return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
      |                                   ~~~^~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:173:1: note: candidate: 'double pow(double, double)'
  173 | __MATHCALL_VEC (pow,, (_Mdouble_ __x, _Mdouble_ __y));
      | ^~~~~~~~~~~~~~
/usr/include/c++/14/cmath:380:3: note: candidate: 'constexpr long double std::pow(long double, long double)'
  380 |   pow(long double __x, long double __y)
      |   ^~~
/usr/include/c++/14/cmath:376:3: note: candidate: 'constexpr float std::pow(float, float)'
  376 |   pow(float __x, float __y)
      |   ^~~
a.cc: In function 'int main()':
a.cc:27:22: error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'ld' {aka '__float128'})
   27 |         ld a, b; cin >> a >> b;
      |                  ~~~ ^~ ~
      |                  |      |
      |                  |      ld {aka __float128}
      |                  std::istream {aka std::basic_istream<char>}
In file included from /usr/include/c++/14/sstream:40,
                 from /usr/include/c++/14/complex:45,
                 from /usr/include/c++/14/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:127:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'short int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'short unsigned int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'unsigned int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'long int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'long unsigned int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'long long int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:219:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'float&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:223:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'double&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:227:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:7: note:   conversion of argument 1 would be ill-formed:
a.cc:27:25: error: cannot bind non-const lvalue reference of type 'long double&' to a value of type 'ld' {aka '__float128'}
   27 |         ld a, b; cin >> a >> b;
      |                         ^
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  328 |       operator>>(void*& __p)
      |