level 5
#include<stdio.h>
int main()
{
int n, m, i, left, right, mix;
scanf_s("%d", &n);
int a[100005] = { 0 };
for (i = 0; i < n; i++)//输入
scanf_s("%d", &a[i]);
scanf_s("%d", &m);
int b[10005] = { 0 };
for (i = 0; i < m; i++)
scanf_s("%d", &b[i]);
for (i = 0; i < m; i++)
{
right = n ;
left = 0;
if (b[i] >= a[n - 1])//排除超出和远小于的情况
printf("%d\n", a[n - 1]);
else if (b[i] <= a[0])
printf("%d\n", a[0]);
else
{
while (left < right)//二分法
{
mix = (right + left) / 2;
if (a[mix] < b[i])
left = mix+1;
else if (a[mix] > b[i])
right = mix ;
else
{
printf("%d\n", b[i]); return 0;
}
}
if (a[right] - b[i] < b[i] - a[right-1])
printf("%d\n", a[right]);
else
printf("%d\n", a[right-1]);
}
}
return 0;
}
