C语言版即自行实现排序
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int N,M,sum=0;
cin>>N;int arr1[N];
for(int i=0;i<N;i++)
{
cin>>arr1[i];
}
cin>>M;int arr2[M];
for(int i=0;i<M;i++)
{
cin>>arr2[i];
}
int head1=0,head2=0,tail1=N-1,tail2=M-1;
sort(arr1,arr1+N);
sort(arr2,arr2+M);
while((arr1[head1]*arr2[head2]>0||arr1[tail1]*arr2[tail2]>0)&&head1<=tail1&&head2<=tail2)
{
if(arr1[head1]*arr2[head2]>0&&arr1[tail1]*arr2[tail2]>0)
{
if(arr1[head1]*arr2[head2]>arr1[tail1]*arr2[tail2])//负更大
{
sum+=arr1[head1]*arr2[head2];
head1++;
head2++;
}else
{
sum+=arr1[tail1]*arr2[tail2];
tail1--;
tail2--;
}
}else if(arr1[head1]*arr2[head2]>0)
{
sum+=(arr1[head1]*arr2[head2]);
head1++;
head2++;
}else
{
sum+=arr1[tail1]*arr2[tail2];
tail1--;
tail2--;
}
}
cout<<sum<<endl;
return 0;
}