二分法 40分求助
查看原帖
二分法 40分求助
678558
Wan2co楼主2022/8/1 11:52

rt,实在想不通是哪里的问题了。。。希望大佬们能帮帮孩子

#include<bits/stdc++.h> 
using namespace std;
int m,n,ans=0;
vector<int>a(100001); 
vector<int>b(100001);
int main(){ 
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sort(a.begin(),a.begin()+n);
	for(int i=1;i<=m;i++){
	 	scanf("%d",&b[i]);
		int l=1,r=n,tmp=9999;
		while(l<=r){
			int mid=(r-l)/2+l;
			if(a[1]>=b[i]){
				tmp=a[1]-b[i];
				break;
			}
			else if(a[mid]==b[i]){
				tmp=0;
				break;
			}
			else if(a[mid]<b[i]){
				l=mid+1;
				tmp=min(tmp,abs(a[mid]-b[i])); 
			}
			else {
				r=mid-1;
				tmp=min(tmp,abs(a[mid]-b[i]));
			}	
		}
		ans+=tmp;
	}
	printf("%d",ans);
    return 0;
}
2022/8/1 11:52
加载中...