#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAXN 105 #define MAX_ITER 5000 #define LOWER -1e30 #define UPPER 1e30 int N; double X[MAXN]; double Y[MAXN]; double g(double a, double b) { double ret = 0.0; for(int i = 0; i < N; i++) { ret += (Y[i] - (a * X[i] + b)) * (Y[i] - (a * X[i] + b)); } return ret; } double fB(double a) { double st = LOWER; double dr = UPPER; for(int it = 0; it < MAX_ITER; it++) { double L = (2 * st + dr) / 3; double R = (st + 2 * dr) / 3; if(g(a, L) < g(a, R)) { dr = R; } else { st = L; } } return g(a, st); } double fA() { double st = LOWER; double dr = UPPER; for(int it = 0; it < MAX_ITER; it++) { // st + (dr-st)/3 = st + dr/3 - st/3 = (2/3)st + dr/3 = (2st+dr) / 3 double L = (2 * st + dr) / 3; double R = (st + 2 * dr) / 3; if(fB(L) < fB(R)) { dr = R; } else { st = L; } } return fB(st); } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); cin >> N; for(int i = 0; i < N; i++) cin >> X[i] >> Y[i]; double ans = fA(); cout << fixed << setprecision(5) << ans << endl; return 0; }