PAT甲级-贪心类型-1037 Magic Coupon解题思路

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43999137/article/details/114444983
今日推荐