Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному - Pascal
Формулировка задачи:
Здравствуйте,помогите пожалуйста написать код,спасибо.Реализуйте алгоритм приближенного бинарного поиска.
Входные данные
В первой строке входных данных содержатся числа N и K (0NK100001 ). Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2109.
Выходные данные
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Примеры
входные данные
5 5
1 3 5 7 9
2 4 8 1 6
выходные данные
1
3
7
1
5
Решение задачи: «Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному»
textual
Листинг программы
const n=5; k=4; a:array[1..n] of integer=(1,4,5,8,10); b:array[1..k] of integer=(5,6,1,9); var i,j,l,r,m:integer; begin for i:=1 to n do write(a[i]:3); writeln; for i:=1 to k do write(b[i]:3); writeln; for i:=1 to k do begin l:=1; r:=n; for j:=1 to n do begin m:=(l+r) div 2; if a[m]>b[i] then r:=m else l:=m; end; if l<>r then begin if abs(a[r]-b[i])<abs(a[l]-b[i]) then writeln(a[r]) else writeln(a[l]); end else writeln(a[l]) end; end.
Объяснение кода листинга программы
- Объявляется константа
nсо значением 5, которая представляет количество элементов в массивеa. - Объявляется константа
kсо значением 4, которая представляет количество элементов в массивеb. - Создается массив
aс 5 элементами: 1, 4, 5, 8, 10. - Создается массив
bс 4 элементами: 5, 6, 1, 9. - Объявляются переменные
i,j,l,r,m, все типа integer. - Начинается основная часть программы.
- Выводятся элементы массива
aв одной строке. - Выводятся элементы массива
bв одной строке. - Для каждого элемента
bвыполняется следующее:- Инициализируются переменные
lиrс начальными значениями 1 и n соответственно. - Для каждого элемента массива
aвыполняется следующее:- Инициализируется переменная
jот 1 до n. - Вычисляется значение переменной
mкак целочисленное деление суммы переменныхlиrна 2. - Если a[m] > b[i], то значение переменной
rстановится равнымm, в противном случае значение переменнойlстановится равнымm.
- Инициализируется переменная
- После завершения цикла для каждого элемента массива
a, выполняется следующее:- Если
lне равноr, то выполняется:- Если разница между a[r] и b[i] меньше, чем разница между a[l] и b[i], то выводится значение a[r].
- В противном случае выводится значение a[l].
- В противном случае, выводится значение a[l]. Надеюсь, это поможет! Если у вас есть другие вопросы или вам нужны дополнительные пояснения, не стесняйтесь спрашивать.
- Если
- Инициализируются переменные