1037 Magic Coupon (25 分)
思路
读取时正数和负数分开存储,其余没问题
代码
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int num1[100005];
int num2[100005];
int num3[100005];
int num4[100005];
int n, m ;
int start1 = 0;
int start2 = 0;
int start3 = 0;
int start4 = 0;
int in;
cin>>n;
for(int i =0;i<n;i++)
{
cin>>in;
if(in>= 0 )
num1[start1++] = in;
else
num2[start2++] = in;
}
cin>>m;
for(int i =0;i<m;i++)
{
cin>>in;
if(in>= 0 )
num3[start3++] = in;
else
num4[start4++] = in;
}
sort(num1,num1+start1,cmp);
sort(num2,num2+start2);
sort(num3,num3+start3,cmp);
sort(num4,num4+start4);
int start_x ,start_y;
if (start1<start3) start_x =start1;
else start_x =start3;
if (start2<start4) start_y =start2;
else start_y =start4;
int ans = 0;
for(int i =0;i<start_x;i++)
ans += num1[i]*num3[i];
for(int i =0;i<start_y;i++)
ans += num2[i]*num4[i];
cout<<ans<<endl;
}