katdavidova91
?>

На ! реализуйте алгоритм приближенного бинарного поиска.входные данныев первой строке входных данных содержатся числа n и k. во второй строке n чисел первого массива, отсортированного по неубыванию, а в третьей строке – k чисел второго массива. каждое число в обоих массивах по модулю не превосходит 2109.выходные данныедля каждого из k чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. если таких несколько, выведите меньшее из них.примерывходные данные5 51 3 5 7 9 2 4 8 1 6 выходные данные13715

Информатика

Ответы

filippovev1

Просто прогоняем бинарный поиск дважды, сначала ищем ближайшее число, не большее нужного, потом не меньшее. Для того, чтобы такие числа были, можно дописать в массив очень большое число и очень маленькое. Затем выбираем из этих двух найденных чисел то, что будет ближе.

Пример реализации:

def bin_search(arr, target, kind="<="):

   assert kind in ["<=", ">="]

   if kind == "<=":

       comp = lambda a, b: a <= b

   else:

       comp = lambda a, b: a < b

   l = 0

   r = len(a) - 1

   while l < r - 1:

       m = (l + r) // 2

       if comp(a[m], target):

           l = m

       else:

           r = m

   if kind == "<=":

       return arr[l]

   else:

       return arr[r]

def nearest(arr, target):

   nearest_le = bin_search(arr, target, "<=")

   nearest_ge = bin_search(arr, target, ">=")

   if nearest_ge - target < target - nearest_le:

       return nearest_ge

   else:

       return nearest_le

_ = input()

a = [int(x) for x in input().split()]

a = [float("-Infinity")] + a + [float("+Infinity")]

for target in map(int, input().split()):

   print(nearest(a, target))

janepustu
Клавиатура утверждала. что главнее она ведь без нее печатать тексты нельзя. Память доказывала, что она главнее всех, ведь она все, всегда помнит. Процессор говорил, что главный он, потому что компьютеру работать. А монитор считал, что главный он-ведь без монитора и процессор, и клавиатура и память не нужна. Долго они спорили. Пришёл хозяин компьютера-мальчик по имени Ваня. Он увидел, что они ссорятся и объяснил им: что они все дополняют компьютер, ведь без памяти, монитора и клавиатуры-компьютер работать не будет. Они все поняли и жили не тужили.
Суравцова_Алексей669
... Каждый начал приводить аргументы. "Я лучше потому-то без меня-клавиатуры мы бы не смогли печатать, то есть не смогли бы передавать информацию на компьютер"- сказала клавиатура , "Без меня-монитора мы бы не смогли видеть эту самую информацию"- говорил монитор, "Без меня- памяти мы бы не могли сохранить ее (информацию)"- протараторила память, "А без меня-процессора и вовсе компьютер не стал бы работать"- заявил процессор. И клавиатура, и монитор, и память, и процессор - все они неотъемлимые части компьютера, без них он бы не работал. Не стали они больше ссориться, и жили дружно и счастливо!

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

На ! реализуйте алгоритм приближенного бинарного поиска.входные данныев первой строке входных данных содержатся числа n и k. во второй строке n чисел первого массива, отсортированного по неубыванию, а в третьей строке – k чисел второго массива. каждое число в обоих массивах по модулю не превосходит 2109.выходные данныедля каждого из k чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. если таких несколько, выведите меньшее из них.примерывходные данные5 51 3 5 7 9 2 4 8 1 6 выходные данные13715
Ваше имя (никнейм)*
Email*
Комментарий*