题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805451374313472
题目分析:
简单地数学模拟。
参考代码:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn=100010;
int Nc, Np, C[maxn], P[maxn], i, j;
int main()
{
scanf("%d", &Nc);
for(int i = 0; i < Nc; i++){
scanf("%d", &C[i]);
}
scanf("%d",&Np);
for(int i = 0; i < Np; i++){
scanf("%d", &P[i]);
}
sort(C, C + Nc);// 从小到大排序
sort(P, P + Np);
ll sum = 0;
for(i = Nc - 1,j = Np - 1; C[i] > 0 && P[j] > 0 && i >=0 && j >=0; i--,j--){
sum += C[i]*P[j];
}
for(i = 0 ,j = 0; C[i] < 0 && P[j] < 0 && i < Nc && j < Np ; i++ ,j++){
sum += C[i]*P[j];
}
printf("%lld",sum);
return 0;
}