#include <cstdio> #include <iostream> #include <fstream> #include <vector> #include <list> #include <map> #include <set> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <sstream> #include <iomanip> #include <cmath> #include <cstdlib> #include <cctype> #include <cstring> #include <string> #include <ctime> #include <cassert> #include <utility> using namespace std; #define MAXN 105 #define MAX_ITER 1000 #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; }