思路:没思路,看了看题解才会,经计算后答案必定是整数而且是m(a1^2+a2^2+......am^2)-(a1+a2+......am)^2,暴力,超时,之后用前缀和ac
#include<bits/stdc++.h>
using namespace std;
long long arr[1000010], sum1[1000010], sum2[1000010];
long long minn = 0x3f3f3f3f3f3f3f3f;
int main() {
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> arr[i];
sort(arr + 1, arr + 1 + n);
for(int i = 1; i <= n; i++) {
sum1[i] = sum1[i - 1] + arr[i];
sum2[i] = sum2[i - 1] + arr[i] * arr[i];
}
for(int i = 1; i <= n - m + 1; i++) {
minn = min(minn, m * (sum2[i + m - 1] - sum2[i - 1]) - (sum1[i + m - 1] - sum1[i - 1]) * (sum1[i + m - 1] - sum1[i - 1]));
}
cout << minn;
return 0;
}