题目大意:
给出两组数字,有正有负,求出第一组数字和第二组数字乘机的最大值的总和。
代码:
#include<algorithm>
#include<stdio.h>
using namespace std;
int c[100005];
int p[100005];
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int nc, np;
cin >> nc;
for (int i = 0; i < nc; i++)
{
cin >> c[i];
}
cin >> np;
for (int i = 0; i < np; i++)
{
cin >> p[i];
}
sort(c, c + nc, cmp);
sort(p, p + np, cmp);
int sum = 0;
int indexp=np-1;
int indexc=nc-1;
while (true)
{
if (p[indexp] < 0 && c[indexc] < 0&&indexp>=0&&indexc>=0)
{
sum += p[indexp] * c[indexc];
indexp--;
indexc--;
}
else break;
}
indexp = 0;
indexc = 0;
while (true)
{
if (p[indexp] > 0 && c[indexc] > 0&&indexp<np&&indexc<nc)
{
sum += p[indexp] * c[indexc];
indexp++;
indexc++;
}
else break;
}
cout << sum << endl;
return 0;
}