题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1037
// 数学,排序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <algorithm>
using namespace std;
vector<int>coupon, product;
bool cmp(int a, int b)
{
return a>b;
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif
int NC, NP;
scanf("%d", &NC);
int t;
while(NC-->0)
{
scanf("%d", &t);
coupon.push_back(t);
}
scanf("%d", &NP);
while(NP-->0)
{
scanf("%d", &t);
product.push_back(t);
}
sort(coupon.begin(), coupon.end(), cmp);
sort(product.begin(), product.end(), cmp);
int i, sum=0;
for(i=0; coupon[i]>0 && product[i]>0; i++)
{
sum = sum + coupon[i]*product[i];
}
int j;
for(i=coupon.size()-1, j=product.size()-1; coupon[i]<0 && product[j]<0; i--, j--)
{
sum = sum + coupon[i]*product[j];
}
printf("%d\n", sum);
return 0;
}