Реализуйте алгоритм приближенного бинарного поиска.
Входные данные
В первой строке входных данных содержатся числа N и K (0NK100001 ). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2*10^9.
Выходные данные
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Где ошибка?
const q=100000;
type s = array[1..q] of integer;
var mas,mas2: s;
var n,k,i,l,r,c: integer;
begin
readln(n,k);
for i:=1 to n do read(mas[i]);
for i:=1 to k do read(mas2[i]);
for i:=1 to k do
begin
l:=1;
r:=n+1;
while l<r-1 do
begin
c:=(l+r) div 2;
if mas2[i]<mas[c] then
r:=c
else
l:=c;
end;
if l<>r then
begin
if abs(mas[r]-mas2[i])<abs(mas[l]-mas2[i]) then
writeln(mas[r])
else writeln(mas[l]);
end
else writeln(mas[l])
end;
end.