#define NMAX 100010 #include #include #include using namespace std; int i,j; double v[NMAX][2],a,b,sum = 0,mx=0,my=0,suma=0,sumb=0,mins = 2000000000,mina=0, minb=0,nr=0,n,pa=1,pb=1,ps=1; double calcSum(double c1, double c2) { double rez = 0; int k; for (k=1;k<=n;k++) { rez+=(v[k][1] - c1*v[k][0] - c2)*(v[k][1] - c1*v[k][0] - c2); } return rez; } int main() { cin>>n; for (i=1;i<=n;i++) { cin>>v[i][0]>>v[i][1]; } for (i=1;i<=n-1;i++) { for (j=i+1;j<=n;j++) { if (v[i][0]-v[j][0] != 0) { a = (v[i][1]-v[j][1])/(v[i][0]-v[j][0]); b = v[i][1] - a*v[i][0]; sum=calcSum(a,b); if (mins > sum) { mins = sum; mina = a; minb = b; } suma+=a; sumb+=b; pa*=a; pb*=b; nr++; } else { // ignore maybe or count as twice not sure // nr++; } } } a = suma/nr; b = sumb/nr; sum=calcSum(a,b); if (mins > sum) { mins = sum; mina = a; minb = b; } a = pow(pa,1/nr); b = pow(pb,1/nr); sum=calcSum(a,b); if (mins > sum) { mins = sum; mina = a; minb = b; } printf("%f", mins); return 0; }