同一类问题A、B之区别

为什么A是正确的,B不对?问题出在哪里?

img

#include
using namespace std;
const long long int N = 1000000+5;
long long int a[N]={0};
int main()
{
long long int n=0,m=0,x=0;
scanf("%lld%lld",&n,&m);
for(long long int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
sort(a+1,a+n+1);
while(m--)
{
long long int l=1;
long long int r=n;
scanf("%lld",&x);
while(l
{
long long int mid=(l+r) >> 1;
if(a[mid]>x)
{
r=mid;
}
else
{
l=mid+1;
}
}
if(x
{
printf("%lld\n",a[l]);

    }
    else
    {
        printf("-1\n");
    }
}
return 0;

}

img

img

img