为什么输出结果是对的,oj上是runtime?

img





#include<stdio.h>
#include<math.h>
int main()
{
    long long i=0,n,a[100009],m,j=0,mid,b[10008];
    scanf("%lld",&n);
    for(i=0;i<n;i++)
    {
        scanf("%lld",&a[i]);
    }
    scanf("%lld",&m);
    for(i=0;i<m;i++)
        scanf("%lld",&b[i]);
 long long low=0,high=n-1,index;
 for(i=0;i<m;i++)
 {
   while(low<high)
 {
     mid=(low+high)/2;
     if(b[i]>=a[n-1])
       {
           index=a[n-1];
           break;
       }
     else if(b[i]<=a[0])
        {index=a[0];
        break;}
    else if(b[i]==a[mid])
        {
        index=a[mid];
        break;
        }
     else
     {
         if(b[i]<a[mid]&&b[i]>0)
            high=mid-1;
         else if(b[i]>a[mid]&&b[i]<b[n])
            low=mid+1;
     }
 }
    if(low>=high)
    index=a[mid];

 printf("%lld\n",index);
 }
    return 0;
}