#include <stdio.h>
#include <stdlib.h>
int main()
{
int t,i,j,m,n;
long long s[42],q[42],f[42],u,max;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(i=0;i<=n-1;i++){
scanf("%lld",&s[i]);
}
for(i=0;i<n-1;i++){
for(j=i;j<=n-1;j++){
if(s[i]>s[j]){
u=s[i];
s[i]=s[j];
s[j]=u;
}
}
}
// printf("%lld,%lld\n",s[0],s[1]);
f[0]=(s[1]-s[0])*(s[1]-s[0]);
//printf("%lld\n",f[0]);
for(i=1;i<n-1;i++){
f[i]=(s[i+1]-s[i])*(s[i+1]-s[i])+f[i-1];
}
for(i=m;i<n-1;i++){
f[i]=f[i]-f[i-m];
}
q[0]=(100-s[0])*(100-s[0]);
max=q[0];
for(i=1;i<=n-1;i++){
q[i]=f[i-1]+(100-s[i])*(100-s[i]);
//printf("%lld\n",s[1]);
max=max>q[i]?max:q[i];
}
printf("%lld\n",max);
}
return 0;
}现在看当时写的代码感觉当时的思路是错的,而且不需要考虑那么多,(x+y)^2>x^2+y^2,所以只要找到难度最低的就行
3768

被折叠的 条评论
为什么被折叠?



