nq1s788

Приближенный двоичный поиск

Oct 5th, 2025
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1. В этой задаче нам нужно для каждого числа из второго массива найти число из первого массива наиболее близкое по значению
  2. Как один из вариантов решения задачи, мы можем для b[i] одним бинарным поиском найти ближайшее большее или равное из a, другим бинарным поиском найти ближайшее меньшее или равное из a, и сравнить их, взять тот, который ближе
  3.  
  4. Пример кода на python:
  5. n, k = map(int, input().split())
  6. a = list(map(int, input().split()))
  7. b = list(map(int, input().split()))
  8. for e in b:
  9.     l1 = -1
  10.     r1 = n
  11.     while r1 - l1 > 1:
  12.         m = (r1 + l1) // 2
  13.         if a[m] >= e:
  14.             r1 = m
  15.         else:
  16.             l1 = m
  17.     l2 = -1
  18.     r2 = n
  19.     while r2 - l2 > 1:
  20.         m = (r2 + l2) // 2
  21.         if a[m] <= e:
  22.             l2 = m
  23.         else:
  24.             r2 = m
  25.     if r1 == n:
  26.         print(a[l2])
  27.     elif l2 == -1:
  28.         print(a[r1])
  29.     else:
  30.         if e - a[l2] <= a[r1] - e:
  31.             print(a[l2])
  32.         else:
  33.             print(a[r1])
Advertisement
Add Comment
Please, Sign In to add comment