Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- В этой задаче нам нужно для каждого числа из второго массива найти число из первого массива наиболее близкое по значению
- Как один из вариантов решения задачи, мы можем для b[i] одним бинарным поиском найти ближайшее большее или равное из a, другим бинарным поиском найти ближайшее меньшее или равное из a, и сравнить их, взять тот, который ближе
- Пример кода на python:
- n, k = map(int, input().split())
- a = list(map(int, input().split()))
- b = list(map(int, input().split()))
- for e in b:
- l1 = -1
- r1 = n
- while r1 - l1 > 1:
- m = (r1 + l1) // 2
- if a[m] >= e:
- r1 = m
- else:
- l1 = m
- l2 = -1
- r2 = n
- while r2 - l2 > 1:
- m = (r2 + l2) // 2
- if a[m] <= e:
- l2 = m
- else:
- r2 = m
- if r1 == n:
- print(a[l2])
- elif l2 == -1:
- print(a[r1])
- else:
- if e - a[l2] <= a[r1] - e:
- print(a[l2])
- else:
- print(a[r1])
Advertisement
Add Comment
Please, Sign In to add comment