// Template v2 #define pb push_back #define mp make_pair #define first x #define second y #define l(x) x<<1 #define r(x) x<<1 | 1 #define lsb(x) x & -x #include #include using namespace std; typedef long long LL; typedef long double LD; typedef vector VI; typedef pair PII; typedef pair PLL; typedef pair PKK; // primes less than 100 const int PRIM[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}; const int CMAX = 10005; const int MOD = 700001; const int NMAX = 105; const short INF16 = 32000; const int INF = 2*1e9 + 6661369; const LL INF64 = LL(1e18); const LD EPS = 1e-9, PI = acos(-1.0); const long double eps = 1e-6L; int N; long double X[102], Y[102]; long double result = 1000000000000.0L; long double Test(long double a, long double b) { long double resnow = 0; for (int i = 1; i <= N; ++i) resnow += 1.0L * ((a * X[i] + b) - Y[i]) * ((a * X[i] + b) - Y[i]); return resnow; } long double Test2(long double a) { long double l1 = -1000000.0L, l2 = 1000000.0L; while (l2 - l1 > eps) { long double mid1 = l1 + (l2 - l1) / 3; long double mid2 = l2 - (l2 - l1) / 3; if (Test(a, mid1) < Test(a, mid2)) l2 = mid2; else l1 = mid1; } return Test(a, l1); } int main() { cin.sync_with_stdio(false); cin >> N; for (int i = 1; i <= N; ++i) cin >> X[i] >> Y[i]; long double pn1 = -1000000.0L, pn2 = 1000000.0L; while (pn2 - pn1 > eps) { long double mid1 = pn1 + (pn2 - pn1) / 3; long double mid2 = pn2 - (pn2 - pn1) / 3; if (Test2(mid1) < Test2(mid2)) pn2 = mid2; else pn1 = mid1; } cout << fixed << setprecision(6) << Test2(pn1) << '\n'; }