前言

我早该想到的。


#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5 + 5;
int n;
double a[N], s[N];
double xb;

double d2(int l, int r)
{
	double xb = s[r] - s[l - 1], ret = 0;
	xb /= (r - l + 1.0);
	//cout << xb << "\n\n";//////
	
	for (int i = l; i <= r; ++i)
	{
		ret += (1.0 * a[i] - xb) * (1.0 * a[i] - xb);
	}
	return ret;
}

int main()
{
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		cin >> a[i];
	}
	
	sort(a + 1, a + n + 1);
	for (int i = 1; i <= n; ++i)
	{
		s[i] = s[i - 1] + a[i];
	}
	
	cout << "排序:";
	for (int i = 1; i <= n; ++i)
		cout << a[i] << ' ';
	cout << '\n';
	
	cout << "    分组    第一组d^2    第二组d^2    组内d^2\n";
	for (int k = 1; k < n; ++k)
	{
		double l = d2(1, k), r = d2(k + 1, n);
		cout << "第 " << k << " 个间隔     "
			 << l << "            "
			 << r << "          "
			 << l + r << "\n";
	}
	
	return 0;
}

/*
10
8 12 8 10 13 7 12 11 10 9
*/