#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
scanf("%d",&n);
int coupon[100010],product[100010];
for(int i=0;i<n;i++)
{
scanf("%d",coupon[i]);
}
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d",product[100010]);
}
sort(coupon,coupon+n);
sort(product,product+m);
int i=0,j=0,ans=0;
while(i<n&&j<m&&coupon[i]<0&&product[j]<0)
{
ans = ans + coupon[i]*product[j];
i++;
j++;
}
i=n-1;
j=m-1;
while(i>=0&&j>=0&&coupon[i]>0&&product[j]>0){
ans = ans + coupon[i]*product[j];
i--;
j--;
}
printf("%d",ans);
return 0;
}
利用左右各自遍历一遍,分别对俩个都是负数的情况,与俩个都是正数的情况处理一遍,最后得到最大的结果
A037 magic coupon
最新推荐文章于 2024-07-11 03:04:24 发布