请各位大佬看看为什么会错。
我输入样例后结果一直不出来,好像是死循环。
以下是代码。
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int const N=100005;
int n,m,i,k,l,r,mid,temp,s,a[N];
long long ans;
int main()
{
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
scanf("%d",&a[i]);
sort(a+1,a+m+1);
for(i=1;i<=n;i++)
{
scanf("%d",&k);
l=1;r=n;
while(l<r)
{
mid=(l+r)>>1;
if(a[mid]==k)
{
temp=mid;
break;
}
else if(a[mid]>k)
r=mid;
else l=mid;
}
ans+=abs(a[temp]-k);
}
printf("%lld",ans);
}
本人能力有限,希望回复时能说的简单点。