1037 Magic Coupon (25分)

1. 题目

1037 Magic Coupon (25分)

2. 思路

正数:最大的和最大的相乘,负数:最小的和最小的相乘

3. 注意点

不是所有的都要被购买,可以不买

4. 代码

#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<iostream> 

// 13:20 - 13:52
using namespace std;

int n, m;
vector<int> nc;
vector<int> np;

bool cmp(int a, int b){
    return a > b;
}

int main(){
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        int t;
        scanf("%d", &t);
        nc.push_back(t);
    }
    scanf("%d", &m);
    for(int i=0;i<m;i++){
        int t;
        scanf("%d", &t);
        np.push_back(t);
    }
    sort(nc.begin(), nc.end(), cmp);
    sort(np.begin(), np.end(), cmp);
    int sum = 0;
    int i = 0, j = 0;
    for(;i<nc.size() && np[j] > 0 && nc[i] >= 0;){
        sum += nc[i] * np[j];
        i++;
        j++;
    }
    if(i == nc.size()){
        printf("%d", sum);
        return 0;
    }
    j = np.size() - 1;
    i = nc.size() - 1;
    for(;i >= 0 && j >= 0 && nc[i]<0 && np[j]<0;){
        sum += nc[i] * np[j];
        i--;
        j--;
    }
    printf("%d", sum);
}
上一篇:ubuntu16.04中Netcat安装


下一篇:2019-2020-2 网络对抗技术 20175230 Exp2 后门原理与实践