给出俩个长度为n的数组w,m,重新排列后使得下面的式子最小,求和i=1->i=n(w*m)
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int mod=998244353;
int pows(int a,int b){int ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans%mod;}
//int find(int x){return p[x]==x?x:(p[x]=find(p[x]));}
int gcd(int a,int b){if(b==0)return a;return gcd(b,a%b);}
int n;
int w[100010],m[100010];
bool cmp(int a,int b)
{
return a>b;//自写降序函数
}
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=1;i<=n;i++)
cin>>m[i];
int ans=0;
sort(w+1,w+1+n);//默认升序
sort(m+1,m+1+n,cmp);
for(int i=1;i<=n;i++)
ans+=w[i]*m[i];//求和
cout<<ans<<endl;
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int _=1;
cin>>_;
while(_--)
{
solve();
}
}