codeforces 439D Devu and Partitioning of the Array(有深度的模拟)

题目

//参考了网上的代码

注意答案可能超过32位

//要达成目标,就是要所有数列a的都比数列b的要小或者等于
//然后,要使最小的要和最大的一样大,就要移动(大-小)步,
//要使较小的要和较大的一样大,也是要移动(较大-较小)步
//然后都加在一起就好了

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
#define ll long long 
int cmp(ll x,ll y)
{
    return x>y;
}
ll a[100010],b[100010];
int main()
{
    ll n,m;
    cin >> n>> m;
    for(int i=0;i<n;i++)
        cin >> a[i];
    for(int i=0;i<m;i++)
        cin >> b[i];
    sort(a,a+n);
    sort(b,b+m,cmp);
    if(n>m)n=m;
    ll ans=0;
    for(int i=0;i<n;i++)
        if(a[i]<b[i])
            ans+=(b[i]-a[i]);
    cout << ans <<endl;
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/laiba2004/p/3890808.html