1037 Magic Coupon
题目大意:给出两行整数(包括负数和0),两两乘积求和,问和的最大值
思路:贪心算法,先将非负数按从大到小排序,再将负数从小到大排序,一次对应乘积加起来即可,注意0要跳过。测试点4没过
n=int(input())
coupon=list(map(int,input().split()))
m=int(input())
product=list(map(int,input().split()))
coupon.sort(key=lambda x:-x if x>=0 else x)
product.sort(key=lambda x:-x if x>=0 else x)
total=0
i=0
j=0
while i<n and j<m:
if coupon[i]*product[j]>0:
total+=coupon[i]*product[j]
i+=1
j+=1
else:
while coupon[i]>=0: #过滤掉正数和0
i+=1
if i>=n:
break
while product[j]>=0:
j+=1
if j>=m:
break
print(total,end="")