样例过了,测试点一个没过
查看原帖
样例过了,测试点一个没过
790728
fuukoukanro楼主2025/8/3 16:40

用了优先队列,咋回事呢,求大佬指正,代码如下:

#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;
} 
2025/8/3 16:40
加载中...