直接排序然后从i = 0开始选择i,i+m选m组相乘相加即可
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
typedef long long int ll;
const int mx = 1e5+5;
int a[mx];
int main(){
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i = 0; i < n; i++)
scanf("%d",&a[i]);
sort(a,a+n);
ll ans = 0;
for(int i = 0; i < m; i++)
ans += a[i]*a[2*m-i-1];
printf("%lld\n",ans);
}
return 0;
}