集合操作—今日头条2018笔试题

这里写图片描述

#include <vector>
#include <iostream>
#include <algorithm>
#include<map>
using namespace std;
int fun(vector<int> a, vector<int> b, double sum1, double sum2)
{
    int num = 0;
    map<int, int>  am, bm;
    int n = a.size(), m = b.size();
    double av1 = sum1 / n, av2 = sum2 / m;
    for (int i = 0; i < n; i++)
        am[a[i]] = i;
    for (int i = 0; i < b.size(); i++)
    {
        if (b[i] > av1&&b[i] < av2)
        {
            map<int, int>::iterator it = am.find(b[i]);
            if (it == am.end() && m>1)
            {
                num++;
                sum1 += b[i];
                sum2 -= b[i];
                av1 = sum1 / ++n;
                av2 = sum2 / --m;
            }
        }
    }
    return num;
}
int main() {
    int numberB, numberA;
    cin >> numberA >> numberB;
    vector<int> A(numberA);
    vector<int> B(numberB);
    double sumA = 0, sumB = 0;
    for (int i = 0; i < numberA; i++)
    {
        cin >> A[i];
        sumA += A[i];

    }
    for (int i = 0; i < numberB; i++)
    {
        cin >> B[i];
        sumB += B[i];
    }
    sort(A.begin(), A.end());
    sort(B.begin(), B.end());
    double avA = sumA / numberA;
    double avB = sumB / numberB;
    if (avA < avB)
        cout << fun(A, B, sumA, sumB);
    else
        cout << fun(B, A, sumB, sumA);
//  system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值