43
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> nc_p;
vector<int> nc_n;
vector<int> np_p;
vector<int> np_n;
bool cmp1(int a, int b) {
return a > b;
}
bool cmp2(int a, int b) {
return a < b;
}
int main() {
int nc, np, i, tmp;
while(cin>>nc) {
for(i=0; i<nc; i++) {
cin>>tmp;
if(tmp >= 0) {
nc_p.push_back(tmp);
} else {
nc_n.push_back(tmp);
}
}
cin>>np;
for(i=0; i<np; i++) {
cin>>tmp;
if(tmp >= 0) {
np_p.push_back(tmp);
} else {
np_n.push_back(tmp);
}
}
sort(nc_p.begin(), nc_p.end(), cmp1);
sort(nc_n.begin(), nc_n.end(), cmp2);
sort(np_p.begin(), np_p.end(), cmp1);
sort(np_n.begin(), np_n.end(), cmp2);
int sum = 0;
for(i=0; i<nc_p.size() && i<np_p.size(); i++) {
sum += nc_p[i] * np_p[i];
}
for(i=0; i<nc_n.size() && i<np_n.size(); i++) {
sum += nc_n[i] * np_n[i];
}
cout<<sum<<endl;
nc_p.clear();
nc_n.clear();
np_p.clear();
np_n.clear();
}
return 0;
}原文地址:http://blog.csdn.net/jason_wang1989/article/details/45612701