#include
#include
#include
#include
int main()
{
int n,m,i,j,mid,x,k;
int a[100005];
scanf("%d",&n);
for (i=0;iscanf("%d",&a[i]);
}
scanf("%d",&m);
for (k=0;kscanf("%d",&x);
for (i=-1,j=n;i+12;
if (a[mid]>x)
j=mid;
else
i=mid;
}
if (abs(x-a[i])<=abs(a[j]-x))
printf("%d\n",a[i]);
else
printf("%d\n",a[j]);
}
return 0;
}
oj只得了5分
二分查找只对有序数组有效,要先将a数组排序才行
题目给的数太大了,用int会越界的
建议改成long long试试
有用记得采纳呐