#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int cnum, pnum;
scanf("%d", &cnum);
int c[cnum];
for(int i=0; i<cnum; i++){
scanf("%d", &c[i]);
}
scanf("%d", &pnum);
int p[pnum];
for(int i=0; i<pnum; i++){
scanf("%d", &p[i]);
}
sort(c, c+cnum);
sort(p, p+pnum);
int i = 0;
int res = 0;
while(c[i]<0 && p[i]<0 && i<cnum && i<pnum){
res += c[i] * p[i];
i++;
}
i = cnum - 1;
int j = pnum - 1;
while(c[i]>0 && p[j]>0 && i>=0 && j>=0){
res += c[i] * p[j];
i--;
j--;
}
printf("%d", res);
return 0;
}
很简单的题目,但是我一开始给做复杂了,做成O(n^2)了,所以测试点4会超时。
码了一遍书上的解法。