用了优先队列,咋回事呢,求大佬指正,代码如下:
#include<bits/stdc++.h>
using namespace std;
priority_queue<int,vector<int>,greater<int> >pq;
int main(){
int m,n,temp,i,j;
long long sum=0;
cin>>m>>n;
int a[100100];
for(i=0;i<m;i++) cin>>a[i];
for(i=0;i<n;i++){
cin>>temp;
pq.push(temp);
}
sort(a,a+m);
j=0;
while(!pq.empty()){
temp=abs(pq.top()-a[i]);
if(j==m){
sum+=abs(pq.top()-a[m]);
pq.pop();
continue;
}
for(temp=abs(pq.top()-a[j]),i=j;i<m;i++){
if(temp>abs(pq.top()-a[i+1])){
temp=abs(pq.top()-a[i+1]);
continue;
}
sum+=temp;
j=i;
pq.pop();
break;
}
}
cout<<sum;
}