Формулировка задачи:
В первой строке входных данных содержатся числа N и K (0 9 .
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
В первой строке входных данных содержатся числа N и K. Во второй строке задаются N чисел первого массива, отсортированного по неубыванию, а в третьей строке – K чисел второго массива. Каждое число в обоих массивах по модулю не превосходит 2109.
Для каждого из K чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
Алгоритм такой.
1. Реализуй двоичный поиск с указанием места, куда вставить (см. Википедию).
2. Если вставить до первой позиции или за последнюю — return соотв. первое или последнее число.
3. В противном случае выяснить, какое ближе из (i−1)-го и i-го.
Дома проверю, где там ошибка в двоичном поиске, в нём любят ошибаться.
К тому же код у вас чисто олимпиадный, я бы отделил рабочую логику от генерации выходного файла.
Дома проверю, где там ошибка в двоичном поиске, в нём любят ошибаться.