题解
2023-04-30 18:58:24
发布于:天津
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <cstdio>
#define int long long
using namespace std;
/*
我们将原来白板上的和要替换的数放在一起,重新选前n大的数
但每次必须改变,最后一个需要替换的数是必须要在白板上的
此时我们将这前n大的数中最小的替换为这个数
如果这个数已经在前n大了,那就不需要了
*/
const int N=1e5+3,M=2e5+3,inf=2147483647;
int n,m,cnta,cntb;
int a[N],b[N],c[M];
bool cmp(int a,int b){
return a>b;
}
signed main(){
scanf("%lld %lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
cnta+=a[i];
}
for(int i=1;i<=m;i++)scanf("%lld",&b[i]);
for(int i=1;i<=n;i++)c[i]=a[i];
for(int i=1;i<=m;i++)c[n+i]=b[i];
sort(c+1,c+1+n+m,cmp);
for(int i=1;i<=n;i++)cntb+=c[i];
if(b[m]<c[n]){
cntb-=c[n];
cntb+=b[m];
}
printf("%lld\n",cntb);
return 0;
}
这里空空如也
有帮助,赞一个