题目描述
分析:
贪心策略,对于正数和负数分开考虑,正数大的数乘大的数,负数小的数乘小的数
#include<iostream>
#include<algorithm>
using namespace std;
int a[100010],b[100010];
int main(){
int n,m;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
cin>>m;
for(int i=0;i<m;i++){
cin>>b[i];
}
sort(a,a+n);
sort(b,b+m);
int i=0,j,ans=0;
while(i<n&&i<m&&a[i]<0&&b[i]<0){
ans+=a[i]*b[i];
i++;
}
i=n-1;
j=m-1;
while(i>=0&&j>=0&&a[i]>0&&b[j]>0){
ans+=a[i]*b[j];
i--;
j--;
}
cout<<ans<<endl;
return 0;
}