AC代码
#include<bits/stdc++.h>
using namespace std;
vector<int> p1,n1,p2,n2;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
long long sum=0;
int nc,np,temp;
scanf("%d",&nc);
for(int i=0;i<nc;i++)
{
scanf("%d",&temp);
if(temp>=0) p1.push_back(temp);
else n1.push_back(temp);
}
scanf("%d",&np);
for(int i=0;i<np;i++)
{
scanf("%d",&temp);
if(temp>=0) p2.push_back(temp);
else n2.push_back(temp);
}
sort(p1.begin(),p1.end(),cmp);
sort(p2.begin(),p2.end(),cmp);
sort(n1.begin(),n1.end());
sort(n2.begin(),n2.end());
int sp1=p1.size(),sp2=p2.size(),sn1=n1.size(),sn2=n2.size();
for(int i=0,j=0;i<sp1&&j<sp2;i++,j++)
{
sum+=(p1[i]*p2[j]);
}
for(int i=0,j=0;i<sn1&&j<sn2;i++,j++)
{
sum+=(n1[i]*n2[j]);
}
if(sum<0) sum=0;
printf("%lld",sum);
return 0;
}