我用lower_bound写的 怎么只有10分,求解
查看原帖
我用lower_bound写的 怎么只有10分,求解
1512905
renli0426楼主2025/1/26 19:37

#include<bits/stdc++.h> using namespace std; int n , m , a[100005],b[100005]; #define ll long long int main () { cin >> n >> m ; for(int i = 0 ; i<m;i++) { cin >> a[i]; } for(int i = 0 ;i<n;i++) { cin >> b[i]; } ll ans = 0,k; sort(a,a+m); for(int i = 0 ; i < n ; i++) { if(b[i]<=a[0]) ans+=a[0]-b[i]; else if(b[i]>=a[m-1]) ans+=b[i]-a[m-1]; else{ k = lower_bound(a,a+m,b[i])-a; ans += min(a[k]-b[i],b[i]-a[k-1]); }

}
cout << ans ;
return 0;

}

#include<bits/stdc++.h>
using namespace std;
int n , m , a[100005],b[100005];
#define ll long long
int main ()
{
	cin >> n >> m ;
	for(int i = 0 ; i<m;i++)
	{
		cin >> a[i];
	}
	for(int i = 0 ;i<n;i++)
	{
		cin >> b[i];
	}
    ll ans = 0,k;
	sort(a,a+m);
	for(int i = 0 ; i < n ; i++)
	{
		if(b[i]<=a[0])
			ans+=a[0]-b[i];
		else if(b[i]>=a[m-1])
			ans+=b[i]-a[m-1];
		    else{
				k = lower_bound(a,a+m,b[i])-a;
		        ans += min(a[k]-b[i],b[i]-a[k-1]);
			}
        
		
	}
	cout << ans ;
	return 0;
}
2025/1/26 19:37
加载中...